A. C#通過FTP下載文件夾
第一部分是實現單個文件下載的方法
///<summary>
///單個文件下載方法
///</summary>
///<paramname="adss">保存文件的本地路徑</param>
///<paramname="ftpadss">下載文件的FTP路徑</param>
publicvoiddownload(stringadss,stringftpadss)
{
//FileMode常數確定如何打開或創建文件,指定操作系統應創建新文件。
//FileMode.Create如果文件已存在,它將被改寫
FileStreamoutputStream=newFileStream(adss,FileMode.Create);
FtpWebRequestdownRequest=(FtpWebRequest)WebRequest.Create(newUri(ftpadss));
//設置要發送到FTP伺服器的命令
downRequest.Method=WebRequestMethods.Ftp.DownloadFile;
FtpWebResponseresponse=(FtpWebResponse)downRequest.GetResponse();
StreamftpStream=response.GetResponseStream();
longcl=response.ContentLength;
intbufferSize=2048;
intreadCount;
byte[]buffer=newbyte[bufferSize];
readCount=ftpStream.Read(buffer,0,bufferSize);
while(readCount>0)
{
outputStream.Write(buffer,0,readCount);
readCount=ftpStream.Read(buffer,0,bufferSize);
}
ftpStream.Close();
outputStream.Close();
response.Close();
}
第二個部分也就是需要遍歷出所指定的文件夾內所有內容
首先是一個單個遍歷文件夾獲取文件夾下所有文件信息的方法
///</summary>
///<paramname="ftpads">FTP地址路徑</param>
///<paramname="name">我們所選擇的文件或者文件夾名字</param>
///<paramname="type">要發送到FTP伺服器的命令</param>
///<returns></returns>
publicstring[]ftp(stringftpads,stringname,stringtype)
{
WebResponsewebresp=null;
StreamReaderftpFileListReader=null;
FtpWebRequestftpRequest=null;
try
{
ftpRequest=(FtpWebRequest)WebRequest.Create(newUri(ftpads+name));
ftpRequest.Method=type;
webresp=ftpRequest.GetResponse();
ftpFileListReader=newStreamReader(webresp.GetResponseStream(),Encoding.Default);
}
catch(Exceptionex)
{
ex.ToString();
}
StringBuilderstr=newStringBuilder();
stringline=ftpFileListReader.ReadLine();
while(line!=null)
{
str.Append(line);
str.Append("/n");
line=ftpFileListReader.ReadLine();
}
string[]fen=str.ToString().Split('/n');
returnfen;
}
之後是一個我們實現遞歸文件夾的方法
///<summary>
///下載方法KO
///</summary>
///<paramname="ftpads">FTP路徑</param>
///<paramname="name">需要下載文件路徑</param>
///<paramname="Myads">保存的本地路徑</param>
publicvoiddownftp(stringftpads,stringname,stringMyads)
{
stringdownloadDir=Myads+name;
stringftpdir=ftpads+name;
string[]fullname=ftp(ftpads,name,WebRequestMethods.Ftp.ListDirectoryDetails);
//判斷是否為單個文件
if(fullname.Length<=2)
{
if(fullname[fullname.Length-1]=="")
{
download(downloadDir+"/"+name,ftpads+name+"/"+name);
}
}
else
{
string[]onlyname=ftp(ftpads,name,WebRequestMethods.Ftp.ListDirectory);
if(!Directory.Exists(downloadDir))
{
Directory.CreateDirectory(downloadDir);
}
foreach(stringnamesinfullname)
{
//判斷是否具有文件夾標識<DIR>
if(names.Contains("<DIR>"))
{
stringolname=names.Split(newstring[]{"<DIR>"},
StringSplitOptions.None)[1].Trim();
downftp(ftpdir,"//"+olname,downloadDir);
}
else
{
foreach(stringonlynamesinonlyname)
{
if(onlynames==""||onlynames==""||names=="")
{
break;
}
else
{
if(names.Contains(""+onlynames))
{
download(downloadDir+"/"+onlynames,ftpads+name+"/"+
onlynames);
break;
}
}
}
}
}
}
}
在使用WebRequestMethods.Ftp.ListDirectoryDetails取得文件夾下所有內容時,會發現如果其中有文件夾,那麼文件夾的的詳細信息中會有一個"<DIR>"標識,我們就可以通過這個來將其區分開來
同時在獲取文件夾以及文件名稱時用到WebRequestMethods.Ftp.ListDirectory,這個指令能過只獲得文件夾下所有文件包括文件夾的名字,通過這兩個指令所獲取的信息逐一比較,便能確定出文件或文件夾名以傳遞到download和downftp方法中
B. 用python寫測試腳本,從本地傳文件至ftp遠程路徑
轉自:http://news.tuxi.com.cn/kf/article/jhtdj.htm
本文實例講述了python實現支持目錄FTP上傳下載文件的方法。分享給大家供大家參考。具體如下:
該程序支持ftp上傳下載文件和目錄、適用於windows和linux平台。
#!/usr/bin/envpython
#-*-coding:utf-8-*-
importftplib
importos
importsys
classFTPSync(object):
conn=ftplib.FTP()
def__init__(self,host,port=21):
self.conn.connect(host,port)
deflogin(self,username,password):
self.conn.login(username,password)
self.conn.set_pasv(False)
printself.conn.welcome
deftest(self,ftp_path):
printftp_path
printself._is_ftp_dir(ftp_path)
#printself.conn.nlst(ftp_path)
#self.conn.retrlines('LIST./a/b')
#ftp_parent_path=os.path.dirname(ftp_path)
#ftp_dir_name=os.path.basename(ftp_path)
#printftp_parent_path
#printftp_dir_name
def_is_ftp_file(self,ftp_path):
try:
ifftp_pathinself.conn.nlst(os.path.dirname(ftp_path)):
returnTrue
else:
returnFalse
exceptftplib.error_perm,e:
returnFalse
def_ftp_list(self,line):
list=line.split('')
ifself.ftp_dir_name==list[-1]andlist[0].startswith('d'):
self._is_dir=True
def_is_ftp_dir(self,ftp_path):
ftp_path=ftp_path.rstrip('/')
ftp_parent_path=os.path.dirname(ftp_path)
self.ftp_dir_name=os.path.basename(ftp_path)
self._is_dir=False
ifftp_path=='.'orftp_path=='./'orftp_path=='':
self._is_dir=True
else:
#thisuescallbackfunction,thatwillchange_is_dirvalue
try:
self.conn.retrlines('LIST%s'%ftp_parent_path,self._ftp_list)
exceptftplib.error_perm,e:
returnself._is_dir
returnself._is_dir
defget_file(self,ftp_path,local_path='.'):
ftp_path=ftp_path.rstrip('/')
ifself._is_ftp_file(ftp_path):
file_name=os.path.basename(ftp_path)
#如果本地路徑是目錄,下載文件到該目錄
ifos.path.isdir(local_path):
file_handler=open(os.path.join(local_path,file_name),'wb')
self.conn.retrbinary("RETR%s"%(ftp_path),file_handler.write)
file_handler.close()
#如果本地路徑不是目錄,但上層目錄存在,則按照本地路徑的文件名作為下載的文件名稱
elifos.path.isdir(os.path.dirname(local_path)):
file_handler=open(local_path,'wb')
self.conn.retrbinary("RETR%s"%(ftp_path),file_handler.write)
file_handler.close()
#如果本地路徑不是目錄,且上層目錄不存在,則退出
else:
print'EROOR:Thedir:%sisnotexist'%os.path.dirname(local_path)
else:
print'EROOR:Theftpfile:%sisnotexist'%ftp_path
defput_file(self,local_path,ftp_path='.'):
ftp_path=ftp_path.rstrip('/')
ifos.path.isfile(local_path):
file_handler=open(local_path,"r")
local_file_name=os.path.basename(local_path)
#如果遠程路徑是個目錄,則上傳文件到這個目錄,文件名不變
ifself._is_ftp_dir(ftp_path):
self.conn.storbinary('STOR%s'%os.path.join(ftp_path,local_file_name),file_handler)
#如果遠程路徑的上層是個目錄,則上傳文件,文件名按照給定命名
elifself._is_ftp_dir(os.path.dirname(ftp_path)):
print'STOR%s'%ftp_path
self.conn.storbinary('STOR%s'%ftp_path,file_handler)
#如果遠程路徑不是目錄,且上一層的目錄也不存在,則提示給定遠程路徑錯誤
else:
print'EROOR:Theftppath:%siserror'%ftp_path
file_handler.close()
else:
print'ERROR:Thefile:%sisnotexist'%local_path
defget_dir(self,ftp_path,local_path='.',begin=True):
ftp_path=ftp_path.rstrip('/')
#當ftp目錄存在時下載
ifself._is_ftp_dir(ftp_path):
#如果下載到本地當前目錄下,並創建目錄
#下載初始化:如果給定的本地路徑不存在需要創建,同時將ftp的目錄存放在給定的本地目錄下。
#ftp目錄下文件存放的路徑為local_path=local_path+os.path.basename(ftp_path)
#例如:將ftp文件夾a下載到本地的a/b目錄下,則ftp的a目錄下的文件將下載到本地的a/b/a目錄下
ifbegin:
ifnotos.path.isdir(local_path):
os.makedirs(local_path)
local_path=os.path.join(local_path,os.path.basename(ftp_path))
#如果本地目錄不存在,則創建目錄
ifnotos.path.isdir(local_path):
os.makedirs(local_path)
#進入ftp目錄,開始遞歸查詢
self.conn.cwd(ftp_path)
ftp_files=self.conn.nlst()
forfileinftp_files:
local_file=os.path.join(local_path,file)
#如果fileftp路徑是目錄則遞歸上傳目錄(不需要再進行初始化begin的標志修改為False)
#如果fileftp路徑是文件則直接上傳文件
ifself._is_ftp_dir(file):
self.get_dir(file,local_file,False)
else:
self.get_file(file,local_file)
#如果當前ftp目錄文件已經遍歷完畢返回上一層目錄
self.conn.cwd("..")
return
else:
print'ERROR:Thedir:%sisnotexist'%ftp_path
return
defput_dir(self,local_path,ftp_path='.',begin=True):
ftp_path=ftp_path.rstrip('/')
#當本地目錄存在時上傳
ifos.path.isdir(local_path):
#上傳初始化:如果給定的ftp路徑不存在需要創建,同時將本地的目錄存放在給定的ftp目錄下。
#本地目錄下文件存放的路徑為ftp_path=ftp_path+os.path.basename(local_path)
#例如:將本地文件夾a上傳到ftp的a/b目錄下,則本地a目錄下的文件將上傳的ftp的a/b/a目錄下
ifbegin:
ifnotself._is_ftp_dir(ftp_path):
self.conn.mkd(ftp_path)
ftp_path=os.path.join(ftp_path,os.path.basename(local_path))
#如果ftp路徑不是目錄,則創建目錄
ifnotself._is_ftp_dir(ftp_path):
self.conn.mkd(ftp_path)
#進入本地目錄,開始遞歸查詢
os.chdir(local_path)
local_files=os.listdir('.')
forfileinlocal_files:
#如果file本地路徑是目錄則遞歸上傳目錄(不需要再進行初始化begin的標志修改為False)
#如果file本地路徑是文件則直接上傳文件
ifos.path.isdir(file):
ftp_path=os.path.join(ftp_path,file)
self.put_dir(file,ftp_path,False)
else:
self.put_file(file,ftp_path)
#如果當前本地目錄文件已經遍歷完畢返回上一層目錄
os.chdir("..")
else:
print'ERROR:Thedir:%sisnotexist'%local_path
return
if__name__=='__main__':
ftp=FTPSync('192.168.1.110')
ftp.login('test','test')
#上傳文件,不重命名
#ftp.put_file('111.txt','a/b')
#上傳文件,重命名
#ftp.put_file('111.txt','a/112.txt')
#下載文件,不重命名
#ftp.get_file('/a/111.txt',r'D:\')
#下載文件,重命名
#ftp.get_file('/a/111.txt',r'D:112.txt')
#下載到已經存在的文件夾
#ftp.get_dir('a/b/c',r'D:\a')
#下載到不存在的文件夾
#ftp.get_dir('a/b/c',r'D:\aa')
#上傳到已經存在的文件夾
ftp.put_dir('b','a')
#上傳到不存在的文件夾
ftp.put_dir('b','aa/B/')
希望本文所述對大家的Python程序設計有所幫助。
以下轉自:http://blog.csdn.net/linda1000/article/details/8255771
Python中的ftplib模塊
Python中默認安裝的ftplib模塊定義了FTP類,其中函數有限,可用來實現簡單的ftp客戶端,用於上傳或下載文件
FTP的工作流程及基本操作可參考協議RFC959
ftp登陸連接
from ftplib import FTP #載入ftp模塊
ftp=FTP() #設置變數
ftp.set_debuglevel(2) #打開調試級別2,顯示詳細信息
ftp.connect("IP","port") #連接的ftp sever和埠
ftp.login("user","password")#連接的用戶名,密碼
print ftp.getwelcome() #列印出歡迎信息
ftp.cmd("xxx/xxx") #更改遠程目錄
bufsize=1024 #設置的緩沖區大小
filename="filename.txt" #需要下載的文件
file_handle=open(filename,"wb").write #以寫模式在本地打開文件
ftp.retrbinaly("RETR filename.txt",file_handle,bufsize) #接收伺服器上文件並寫入本地文件
ftp.set_debuglevel(0) #關閉調試模式
ftp.quit #退出ftp
ftp相關命令操作
ftp.cwd(pathname) #設置FTP當前操作的路徑
ftp.dir() #顯示目錄下文件信息
ftp.nlst() #獲取目錄下的文件
ftp.mkd(pathname) #新建遠程目錄
ftp.pwd() #返回當前所在位置
ftp.rmd(dirname) #刪除遠程目錄
ftp.delete(filename) #刪除遠程文件
ftp.rename(fromname, toname)#將fromname修改名稱為toname。
ftp.storbinaly("STOR filename.txt",file_handel,bufsize) #上傳目標文件
ftp.retrbinary("RETR filename.txt",file_handel,bufsize)#下載FTP文件
網上找到一個具體的例子:
#例:FTP編程
fromftplibimportFTP
ftp=FTP()
timeout=30
port=21
ftp.connect('192.168.1.188',port,timeout)#連接FTP伺服器
ftp.login('UserName','888888')#登錄
printftp.getwelcome()#獲得歡迎信息
ftp.cwd('file/test')#設置FTP路徑
list=ftp.nlst()#獲得目錄列表
fornameinlist:
print(name)#列印文件名字
path='d:/data/'+name#文件保存路徑
f=open(path,'wb')#打開要保存文件
filename='RETR'+name#保存FTP文件
ftp.retrbinary(filename,f.write)#保存FTP上的文件
ftp.delete(name)#刪除FTP文件
ftp.storbinary('STOR'+filename,open(path,'rb'))#上傳FTP文件
ftp.quit()#退出FTP伺服器
完整的模板:
#!/usr/bin/python
#-*-coding:utf-8-*-
importftplib
importos
importsocket
HOST='ftp.mozilla.org'
DIRN='pub/mozilla.org/webtools'
FILE='bugzilla-3.6.7.tar.gz'
defmain():
try:
f=ftplib.FTP(HOST)
except(socket.error,socket.gaierror):
print'ERROR:cannotreach"%s"'%HOST
return
print'***Connectedtohost"%s"'%HOST
try:
f.login()
exceptftplib.error_perm:
print'ERROR:cannotloginanonymously'
f.quit()
return
print'***Loggedinas"anonymously"'
try:
f.cwd(DIRN)
exceptftplib.error_perm:
print'ERRORLcannotCDto"%s"'%DIRN
f.quit()
return
print'***Changedto"%s"folder'%DIRN
try:
#傳一個回調函數給retrbinary()它在每接收一個二進制數據時都會被調用
f.retrbinary('RETR%s'%FILE,open(FILE,'wb').write)
exceptftplib.error_perm:
print'ERROR:cannotreadfile"%s"'%FILE
os.unlink(FILE)
else:
print'***Downloaded"%s"toCWD'%FILE
f.quit()
return
if__name__=='__main__':
main()
C. FTP獲取文件名以及文件路徑
既然是伺服器,而且是linux 你用一個tomcat 當做伺服器,可以配置一下tomcat,就可以直接ftp 模式訪問文件夾了。
D. 通過ftp登錄到linux無法看到掛載的數據盤中的文件
修改 vsftp 的設置。
請參考:
vsftp的配置參數
listen=YES
當為YES時,vsftpd將以單獨模式運行.這意味著vsftpd不必以某種inetd運行,而是可以
直接執行.vsftpd執行後會自己偵聽和操作進入的連接
listen_ipv6=NO
類似listen選項,但該選項使vsftpd偵聽的地址為IPv6格式的.
allow_anon_ssl=NO
該選項僅在ssl_enable為YES時才用,若設為YES表示允許匿名用戶通過ssl連接
anon_mkdir_write_enable=NO
該選項設置為YES時表示允許匿名用戶創建新的目錄,為了使該選項能夠起作用必須
使write_enable為YES且匿名的用戶必須有在父目錄寫入的許可權
anon_other_write_enable=NO
該選項設置為YES時,匿名用戶除了具有上傳,創建目錄的許可權外還具有其他的許可權
如重命名等
anon_upload_enable=NO
該選項為YES時表示匿名用戶有上傳文件的許可權.為了使該選項工作必須使write_enable
為YES
anon_world_readable_only=YES
該選項為YES時,匿名用戶只能下載具有全局可讀屬性的文件
anonymous_enable=NO
該選項控制著是否允許匿名用戶登錄.當為YES時則同時允許匿名用戶ftp和anonyous登錄
ascii_download_enable=YES
該選項用於指定是否允許下載時以ASCII模式傳輸數據
ascii_upload_enable=YES
該選項設置是否允許上傳時以ASCII模式傳輸數據
async_abor_enable=NO
該選項設置為YES時,FTP命令將顯示為"async ABOR"僅反對高級客戶端使用這一特性.
background=NO
該選項設置當vsftpd以"listen"模式運行時,則在後台運行偵聽程序
check_shell=YES
該選項只對以non-PAM編譯的vsftpd起作用,當設置為NO時,則vsftpd不會根據/etc/shells
文件來檢查本地用戶登錄的shell是否有效
chmod_enable=YES
該選項為YES時,允許本地用戶使用CHMOD命令改變上傳的文件的許可權.匿名用戶無法使用
CHMOD命令
chown_uploads=YES
當為YES時,所有匿名用戶上傳上來的文件都會將文件的所屬關系改為由chown_user-name
指定的用戶
chroot_list_enable=NO
該選項用於指定一系列可以使用chroot()的用戶名,指定的用戶在登錄FTP後就會轉向
自己的主目錄所在的位置.默認情況下指定的用戶放在/etc/vsftpd.chroot_list文件中
但可以在chroot_list_file指定別的文件名
chroot_local_user=NO
當設置為YES時,本地用戶登錄後就自動轉到他們的用戶主目錄中去。
注意!:該選項用安全問題,特別是當用戶有上傳文件或訪問shell的許可權時.僅在你知道自己要作什麼時才設置為YES
connect_from_port_20=YES
該選項用於設置是否使用20號埠傳輸數據.由於安全的原因,一些客戶端堅持使用
20號埠,但是禁用該選項可以使vsftpd運行在更低的特權中
debug_ssl=NO
該選項為YES時,將會把OpenSSl連接的診斷信息存儲在日誌文件中。
delete_failed_uploads=YES
當設置為YES時,在上傳文件失敗時刪除該文件.
deny_email_enable=NO
該選項用於指定一系列拒絕匿名用戶登錄的密碼郵件.默認情況下包含郵件的文件為
/etc/vsftpd.banned_emails或由banned_email_file指定的文件中
dirlist_enable=YES
是否允許用戶列出目錄的內容
dirmessage_enable=YES
當為YES時表示當用戶第一次進入一個新的目錄時會顯示目錄的信息.默認情況下目錄的
信息在目錄裡面的.message文件里.但是你可以用message_file來指定別的.
download_enable=YES
允許下載,若為NO時則不允許下載。
al_log_enable=NO
當設置為YES時將會同時產生兩個日誌文件,一個為/var/log/vsftpd.log(vsftpd自己
風格的日誌文件)和/var/log/xferlog(wu-ftpd風格的日誌文件可以被標準的工具分析)
force_dot_files=NO
若設置為YES時,在指定'ls -a'時會列出所有以.開始的隱藏文件,該選項則使.和..不列出
force_anno_data_ssl=NO
僅在ssl_enable為YES時可用,當該選項為YES時所有匿名用戶登錄時都要求使用SSL連接
進行數據傳輸
force_anon_logins_ssl=NO
僅在ssl_enable為YES時可用,當該選項為YES時所有匿名用戶登錄時都要求使用SSl連接
進行密碼傳輸
force_local_data_ssl=YES
僅在ssl_enable為YES時可用,當為YES時,所有非匿名用戶登錄時都要求使用SSL鏈接進
行數據傳輸
force_local_logins_ssl=YES
僅在ssl_enable為YES時可用,當為YES時,所有非匿名用戶登錄時到要求使用SSL鏈接
進行密碼傳輸
guest_enable=NO
設置是否允許非匿名用戶作為"guest"登錄,一個guest登錄用戶映射為guest_username
指定的一個用戶名
hide_ids=YES
當設置為YES時,所有目錄列表中的組和用戶的信息都被隱藏,用"ftp"代替。
implicit_ssl=NO
當為YES時,在所有ftp連接的第一件事就是SSL握手
local_enable=YES
控制是否允許本地用戶登錄.(/etc/passwd中指定的用戶登錄)
lock_upload_files=YES
設置當用戶上傳文件時是否鎖住上傳的文件。
log_ftp_protocol=YES
當為YES時,所有FTP的請求和應答都被記錄在日誌文件中.可用於調試。
ls_recurse_enable=NO
設置是否允許遞歸列出目錄及其子目錄中的內容
mdtm_write=YES
允許使用MDTM設置修改的時間
no_anon_password=NO
當為YES時,將使vsftpd不會詢問匿名用戶的密碼
no_log_lock=NO
當為YES時在記錄日誌時不會鎖住日誌文件
one_process_model=NO
允許登錄用戶只能使用一個進程
passwd_chroot_enable=NO
和chroot_local_user一起使用當為YES時.在用戶轉到自己主目錄時不需要再輸入密碼。
pasv_addr_resolve=NO
若你想使用主機名的話就設置為YES
pasv_enable=YES
該選項用於設置是否使用PASV方式來獲得數據連接。
pasv_promiscuous=NO
如果你想禁用PORT安全檢查(確保輸出的數據僅連接到客戶端)則設置為YES.僅在你在你
知道你在作什麼時.
require_cert=NO
若設置為YES時,則所有的SSl客戶端連接都需要提供證書,有效的證書在validate_cert中指
定
require_ssl_reuse=NO
當設置為YES時,所有的SSl數據連接都需要檢閱SSL會話安全盡管該選項默認是安全的,但是他可
能會破壞許多FTP客戶端,所以你可能會禁用他
run_as_launching_user=NO
若你希望使用引導vsftpd運行的用戶去運行vsftpd.該選項在不能使用root用戶訪問FTP時很
很有用。重要的警告!:不要使用該選項除非你真的知道你在作什麼.
secure_email_list_enable=NO
若你想指定一系列的郵件密碼讓匿名用戶登錄。默認情況下郵件密碼存放在/etc/vsftpd.email_passwords,
但可以email_password_file指定文件.
session_support=NO
該選項控制著vsftpd是否試圖控制著登錄會話.若vsftpd控制著登錄會話的話,則會更新utmp和wtmp日誌文件.
如果使用PAM認證的話他也會打開一個pam_session且只在退出登錄後關閉.如果你不需要登錄會話的話你可能
會關閉此選項。
setproctitle_enable=NO
若該選項為YES時vsftpd會試著顯示系統中的進程的狀態信息。換言之就是報告影響一個vsftpd
會話的進程名。
ssl_enable=NO
是否支持SSl連接。
ssl_request_cert=YES
SSL連接時是否需要認證.
ssl_sslv2=NO
該選項僅在ssl_enable可用時才應用當為YES時,允許SSL v2協議連接。TLS v1優先
ssl_sslv3=NO
該選項僅在ssl_enable為YES時可用.允許使用SSl v3協議連接.TLS v1優先
ssl_tlsv1=YES
該選項僅在ssl_enable為YES時可用,允許使用TLS v1協議。
strict_ssl_read_eof=NO
該選項為YES時,在上傳數據時需要通過SSL連接的終端,而不是埠上的一個EOF
strict_ssl_write_shutdown=NO
當設置為YES時,在下載數據時需要通過SSL連接的埠,而不是埠上的一個EOF
syslog_enable=NO
該選項為YES時.任何原來記錄到/var/log/vsftpd.log的信息都將記錄到系統日誌文件中
tcp_wrappers=YES
當該選項為YES時,連接時將通過tcp_wrapper訪問控制(wrap為隱藏的意思)
text_userdb_names=NO
該選項為YES時設置顯示用戶名和組名.默認情況下使用的是UID和GID
tilde_user_enable=NO
控制vsftpd是否使用相對路徑.(以~/something顯示路徑)
use_localtime=YES
設置是否使用本地用戶所在的時區顯示時間.默認顯示的時間為GMT時區的.
use_sendfile=YES
用於設置在你的系統中使用sendfile()系統調用來測試的內部設置。
userlist_deny=NO
設置禁止登錄的用戶列表,用戶列表在userlist_file中指定的文件中指定
userlist_enable=NO
允許從文件中載入允許登錄的用戶名列表
validate_cert=YES
若設置為YES時,所有的SSL客戶端需要合法的認證書
virtual_use_local_privs=NO
該選項用於設置虛擬用戶是否擁有和本地用戶一樣的特權.
write_enable=YES
該選項用於設置是否允許使用會改變FTP文件系統的命令.這些命令有:STOP,DELE,RNFR,
RNTO,MKD,RMD,APPE,SITE
xferlog_enable=YES
設置為YES時,會產生一個關於上傳和下載的日誌文件,默認的日誌文件為/var/log/vsftp.log
但是可以通過vsftpd_log_file指定別的日誌文件名
xferlog_std_format=NO
設置是否產生標准格式(wu-ftpd風格的)日誌文件.默認的文件名/var/log/xferlog
但是可以通過xferlog_file指定別的日子文件名。
數字選項
說明:以下為數字選項,一個數字選項的值不能是負數,可以指定一個八進制的數字
在數字前加上'0'就是八進制的數值否則默認為十進制的數值.
accept_timeout=60
該選項用於設置一個PASV風格的連接的超時,單位為s
anon_max_rate=1024
該選項用於設置匿名用戶的最大數據傳輸速度,單位b/s.若設置為0時表示無限制
anon_umask=077
該選項用於設置匿名用戶創建文件時的許可權掩碼.
chown_upload_mode=0600
該選項用於設置匿名用戶上傳文件時使用chown強制改變文件的許可權值
connect_timeout=60
用於設置連接超時
data_connection_timeout=120
用於設置沒有進程使用時最大允許數據連接的超時
delay_failed_login=1
設置登錄失敗時要延遲1s後才可以再次連接
delay_successful_login=0
設置登錄成功後的延遲時間,單位是s
file_open_mode=0777
設置上傳文件的許可權,若你希望上傳的文件可以被執行你需要設置為0777
ftp_data_port=21
設置PORT風格的連接的埠,默認為20
idle_session_timeout=300
設置遠程客戶端使用兩個FTP命令之間的最大時間,超時後則退出客戶端連接
listen_port=21
當vsftpd在單獨模式下運行時偵聽的埠號
local_max_rate=2048
設置本地用戶最大的傳輸速度,b/s,若設置為0表示為限制。
local_umask=0077
設置本地用戶上傳文件時的許可權掩碼
max_clients=10
設置最大連接的IP數為10
max_login_fails=5
設置在5次連接失敗後終止會話
max_per_ip=1
設置每個IP地址最多可以連接的數目為1次。若設置為0時表示無限次
pasv_max_port=0
設置使用PASV風格連接時最大的埠號,0表示無限制
pasv_min_port=0
設置使用PASV風格連接時最小的埠號,0表示無限制
trans_chunk_size=0
你可能不會改變這個選項設置,但是你可以為更低寬頻限制將此選項設置為像8192一樣
字元串設置
anon_root=/home/ftp/ftp
設置匿名用戶登錄後轉向的目錄
banned_email_file=/home/huangyandong/logs/vsftpd/vsftpd.banned_emails
設置存放匿名用戶郵件密碼列表的文件
banner_file=/home/huangyandong/logs/vsftpd/vsftpd.banner
設置包含當用戶登錄FTP時顯示的內容的文件,會覆蓋由ftpd_banner設置的字元串
ca_certs_file
該選項設置載入認證證書的文件
chown_username=huangyandong
設置當上傳文件後文件的所屬關系該為huangyandong所有,僅在chown_uploads為YES時
可用
chroot_list_file=/home/huangyandong/logs/vsftpd/vsftpd.chroot_list
設置包含允許轉到用戶主目錄的用戶名的文件名,僅在chroot_local_user和chroot_list_enable
為YES時可用
cmds_allowed=PASV,RETR,QUIT
指定一系列由,隔開的允許使用的FTP命令
cmds_denied=DELE,RMD
指定一系列由,隔開的不允許使用的FTP命令
此處指定不允許刪除文件和目錄
deny_file
指定包含一系列不允許訪問的文件名的文件
dsa_cert_file
指定載入DSA證書的文件名
dsa_private_key_file
指定包含DSA私鑰的文件
email_password_file=/etc/vsftpd.email_password
指定包含郵件密碼的文件
ftp_username=ftp
指定操作匿名用戶使用的根目錄的用戶名
ftpd_banner
指定用戶登錄FTP時顯示的內容
guest_username=ftp
指定遊客映射的用戶名
hide_file
指定要隱藏的文件名匹配
listen_address
指定當在單獨模式下運行時偵聽的IP地址
listen_address6
指定當在單獨模式下運行時偵聽的IPV6地址
local_root=/home/ftp/ftp
指定本地用戶登錄後轉入的目錄
message_file
該選項指定包含當用戶轉入一個新的目錄時顯示的內容的文件,默認文件為.message
僅在dirmessage_enable可用時才有用
secure_chroot_dir=/home/huangyandong/logs/vsftpd/empty
指定安全的目錄名,該目錄不能被ftp用戶寫入,在FTP文件系統不能訪問是轉入的目錄
userlist_file=/etc/vsftpd.user_list
該選項用於指定在userlist_enable為YES時,從指定文件中載入用戶列表
vsftpd_log_file=/home/huangyandong/logs/vsftpd/vsftpd.log
用於指定日誌文件,默認為/var/log/vsftpd.log
xferlog_file=/home/huangyandong/logs/vsftpd/xferlog
用於在xferlog_enable為YES時指定標準的日誌文件默認為/var/log/xferlog
E. 我想登錄一個ftp然後把某個目錄的所有文件考到另一個ftp的目錄的某個文件夾下用java代碼實現
用的commons-net包中的FTPClient
ftp1為拷貝目錄,ftp2為被拷貝目錄
你先登錄ftp2調用ftp1,
ftpClient1.changeWorkingDirectory(path);
InputStream inputStream = ftpClient1.retrieveFileStream(file.getName());
用這個代碼應該可以從ftp1中獲得一個inputStream ,在ftp2中可以做上傳操作
目錄的話ftp2還要做遞歸存放到list中,ftp2遍歷上傳. 其實我也沒做這個,希望思路有點幫助,應該可以實現.good luck!~~~
F. 1、什麼是FTPFTP的工作模式是什麼什麼是匿名FTP
[編輯本段]文件傳輸協議
FTP(File Transfer Protocol),是文件傳輸協議的簡稱。用於Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序(Application)。用戶可以通過它把自己的PC機與世界各地所有運行FTP協議的伺服器相連,訪問伺服器上的大量程序和信息。
FTP(File Transfer Protocol)
[編輯本段]FTP的作用
正如其名所示:FTP的主要作用,就是讓用戶連接上一個遠程計算機(這些計算機上運行著FTP伺服器程序)察看遠程計算機有哪些文件,然後把文件從遠程計算機上拷到本地計算機,或把本地計算機的文件送到遠程計算機去。
[編輯本段]FTP工作原理
拿下傳文件為例,當你啟動FTP從遠程計算機拷貝文件時,你事實上啟動了兩個程序:一個本地機上的FTP客戶程序:它向FTP伺服器提出拷貝文件的請求。另一個是啟動在遠程計算機的上的FTP伺服器程序,它響應你的請求把你指定的文件傳送到你的計算機中。FTP採用「客戶機/伺服器」方式,用戶端要在自己的本地計算機上安裝FTP客戶程序。FTP客戶程序有字元界面和圖形界面兩種。字元界面的FTP的命令復雜、繁多。圖形界面的FTP客戶程序,操作上要簡潔方便的多。
簡單地說,支持FTP協議的伺服器就是FTP伺服器,下面介紹一下什麼是FTP協議。(文件傳輸協議)
一般來說,用戶聯網的首要目的就是實現信息共享,文件傳輸是信息共享非常重要的一個內容之一。Internet上早期實現傳輸文件,並不是一件容易的事,我們知道 Internet是一個非常復雜的計算機環境,有PC,有工作站,有MAC,有大型機,據統計連接在Internet上的計算機已有上千萬台,而這些計算機可能運行不同的操作系統,有運行Unix的伺服器,也有運行Dos、Windows的PC機和運行MacOS的蘋果機等等,而各種操作系統之間的文件交流問題,需要建立一個統一的文件傳輸協議,這就是所謂的FTP。基於不同的操作系統有不同的FTP應用程序,而所有這些應用程序都遵守同一種協議,這樣用戶就可以把自己的文件傳送給別人,或者從其它的用戶環境中獲得文件。
與大多數Internet服務一樣,FTP也是一個客戶機/伺服器系統。用戶通過一個支持FTP協議的客戶機程序,連接到在遠程主機上的FTP伺服器程序。用戶通過客戶機程序向伺服器程序發出命令,伺服器程序執行用戶所發出的命令,並將執行的結果返回到客戶機。比如說,用戶發出一條命令,要求伺服器向用戶傳送某一個文件的一份拷貝,伺服器會響應這條命令,將指定文件送至用戶的機器上。客戶機程序代表用戶接收到這個文件,將其存放在用戶目錄中。
在FTP的使用當中,用戶經常遇到兩個概念:"下載"(Download)和"上載"(Upload)。"下載"文件就是從遠程主機拷貝文件至自己的計算機上;"上載"文件就是將文件從自己的計算機中拷貝至遠程主機上。用Internet語言來說,用戶可通過客戶機程序向(從)遠程主機上載(下載)文件。
使用FTP時必須首先登錄,在遠程主機上獲得相應的許可權以後,方可上載或下載文件。也就是說,要想同哪一台計算機傳送文件,就必須具有哪一台計算機的適當授權。換言之,除非有用戶ID和口令,否則便無法傳送文件。這種情況違背了Internet的開放性,Internet上的FTP主機何止千萬,不可能要求每個用戶在每一台主機上都擁有帳號。匿名FTP就是為解決這個問題而產生的。
匿名FTP是這樣一種機制,用戶可通過它連接到遠程主機上,並從其下載文件,而無需成為其注冊用戶。系統管理員建立了一個特殊的用戶ID,名為anonymous, Internet上的任何人在任何地方都可使用該用戶ID。
通過FTP程序連接匿名FTP主機的方式同連接普通FTP主機的方式差不多,只是在要求提供用戶標識ID時必須輸入anonymous,該用戶ID的口令可以是任意的字元串。習慣上,用自己的E-mail地址作為口令,使系統維護程序能夠記錄下來誰在存取這些文件。
值得注意的是,匿名FTP不適用於所有Internet主機,它只適用於那些提供了這項服務的主機。
當遠程主機提供匿名FTP服務時,會指定某些目錄向公眾開放,允許匿名存取。系統中的其餘目錄則處於隱匿狀態。作為一種安全措施,大多數匿名FTP主機都允許用戶從其下載文件,而不允許用戶向其上載文件,也就是說,用戶可將匿名FTP主機上的所有文件全部拷貝到自己的機器上,但不能將自己機器上的任何一個文件拷貝至匿名FTP主機上。即使有些匿名FTP主機確實允許用戶上載文件,用戶也只能將文件上載至某一指定上載目錄中。隨後,系統管理員會去檢查這些文件,他會將這些文件移至另一個公共下載目錄中,供其他用戶下載,利用這種方式,遠程主機的用戶得到了保護,避免了有人上載有問題的文件,如帶病毒的文件。
作為一個Internet用戶,可通過FTP在任何兩台Internet主機之間拷貝文件。但是,實際上大多數人只有一個Internet帳戶,FTP主要用於下載公共文件,例如共享軟體、各公司技術支持文件等。 Internet上有成千上萬台匿名FTP主機,這些主機上存放著數不清的文件,供用戶免費拷貝。實際上,幾乎所有類型的信息,所有類型的計算機程序都可以在Internet上找到。這是Internet吸引我們的重要原因之一。
匿名FTP使用戶有機會存取到世界上最大的信息庫,這個信息庫是日積月累起來的,並且還在不斷增長,永不關閉,涉及到幾乎所有主題。而且,這一切是免費的。
匿名FTP是Internet網上發布軟體的常用方法。Internet之所以能延續到今天,是因為人們使用通過標准協議提供標准服務的程序。像這樣的程序,有許多就是通過匿名FTP發布的,任何人都可以存取它們。
Internet中的有數目巨大的匿名FTP主機以及更多的文件,那麼到底怎樣才能知道某一特定文件位於哪個匿名FTP主機上的那個目錄中呢?這正是Archie伺服器所要完成的工作。Archie將自動在FTP主機中進行搜索,構造一個包含全部文件目錄信息的資料庫,使你可以直接找到所需文件的位置信息。
[編輯本段]通過ftp傳輸文件的一般步驟
需要進行遠程文件傳輸的計算機必須安裝和運行ftp客戶程序。在windows操作系統的安裝過程中,通常都安裝了tcp/ip協議軟體,其中就包含了ftp客戶程序。但是該程序是字元界面而不是圖形界面,這就必須以命令提示符的方式進行操作,很不方便。
啟動ftp客戶程序工作的另一途徑是使用ie瀏覽器,用戶只需要在ie地址欄中輸入如下格式的url地址:ftp://[用戶名:口令@]ftp伺服器域名[:埠號]
(在CMD命令行下也可以用上述方法連接,通過put命令和get命令達到上傳和下載的目的,通過ls命令列出目錄,除了上述方法外還可以在cmd下輸入ftp回車,然後輸入open IP來建立一個連接,此方法還適用於linux下連接ftp伺服器)
通過ie瀏覽器啟動ftp的方法盡管可以使用,但是速度較慢,還會將密碼暴露在ie瀏覽器中而不安全。因此一般都安裝並運行專門的ftp客戶程序。
1.在本地電腦上登陸到國際互聯網.
2.搜索有文件共享主機或者個人電腦(一般有專門的FTP伺服器網站上公布的,上面有進入該主機或個人電腦的名稱,口令和路徑).
3.當與遠程主機或者對方的個人電腦建立連接後,用對方提供的用戶名和口令登陸到該主機或對方的個人電腦.
4.在遠程主機或對方的個人電腦登陸成功後,就可以上傳你想跟別人分享的東東或者下載別人授權共享的東東(這里的東東是指能放到電腦里去又能在顯示屏上看到的東東).
5.完成工作後關閉FTP下載軟體,切斷連接.
為了實現文件傳輸,用戶還要運行專門的文件傳輸程序,比如網際快車就有這方面的功能,其它還有很多專門的FTP傳輸軟體,FlashFxp為其中的傑出軟體。有興趣的網友可以試試其他的軟體,如LeapFTP總歸各有各的特色.
FTP協議
TCP/IP協議中,FTP標准命令TCP埠號為21,Port方式數據埠為20。FTP協議的任務是從一台計算機將文件傳送到另一台計算機,它與這兩台計算機所處的位置、聯接的方式、甚至是是否使用相同的操作系統無關。假設兩台計算機通過ftp協議對話,並且能訪問Internet, 你可以用ftp命令來傳輸文件。每種操作系統使用上有某一些細微差別,但是每種協議基本的命令結構是相同的。
FTP的傳輸有兩種方式:ASCII傳輸模式和二進制數據傳輸模式。
1.ASCII傳輸方式:假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的不是UNIX,當文件傳輸時ftp通常會自動地調整文件的內容以便於把文件解釋成另外那台計算機存儲文本文件的格式。
但是常常有這樣的情況,用戶正在傳輸的文件包含的不是文本文件,它們可能是程序,資料庫,字處理文件或者壓縮文件(盡管字處理文件包含的大部分是文本,其中也包含有指示頁尺寸,字型檔等信息的非列印字元)。在拷貝任何非文本文件之前,用binary 命令告訴ftp逐字拷貝,不要對這些文件進行處理,這也是下面要講的二進制傳輸。
2.二進制傳輸模式:在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應的。即使目的地機器上包含位序列的文件是沒意義的。例如,macintosh以二進制方式傳送可執行文件到Windows系統,在對方系統上,此文件不能執行。
如果你在ASCII方式下傳輸二進制文件,即使不需要也仍會轉譯。這會使傳輸稍微變慢 ,也會損壞數據,使文件變得不能用。(在大多數計算機上,ASCII方式一般假設每一字元的第一有效位無意義,因為ASCII字元組合不使用它。如果你傳輸二進制文件,所有的位都是重要的。)如果你知道這兩台機器是同樣的,則二進制方式對文本文件和數據文件都是有效的。
5. FTP的工作方式
FTP支持兩種模式,一種方式叫做Standard (也就是 PORT方式,主動方式),一種是 Passive (也就是PASV,被動方式)。 Standard模式 FTP的客戶端發送 PORT 命令到FTP伺服器。Passive模式FTP的客戶端發送 PASV命令到 FTP Server。
下面介紹一個這兩種方式的工作原理:
Port模式FTP 客戶端首先和FTP伺服器的TCP 21埠建立連接,通過這個通道發送命令,客戶端需要接收數據的時候在這個通道上發送PORT命令。 PORT命令包含了客戶端用什麼埠接收數據。在傳送數據的時候,伺服器端通過自己的TCP 20埠連接至客戶端的指定埠發送數據。 FTP server必須和客戶端建立一個新的連接用來傳送數據。
Passive模式在建立控制通道的時候和Standard模式類似,但建立連接後發送的不是Port命令,而是Pasv命令。FTP伺服器收到Pasv命令後,隨機打開一個高端埠(埠號大於1024)並且通知客戶端在這個埠上傳送數據的請求,客戶端連接FTP伺服器此埠,然後FTP伺服器將通過這個埠進行數據的傳送,這個時候FTP server不再需要建立一個新的和客戶端之間的連接。
很多防火牆在設置的時候都是不允許接受外部發起的連接的,所以許多位於防火牆後或內網的FTP伺服器不支持PASV模式,因為客戶端無法穿過防火牆打開FTP伺服器的高端埠;而許多內網的客戶端不能用PORT模式登陸FTP伺服器,因為從伺服器的TCP 20無法和內部網路的客戶端建立一個新的連接,造成無法工作。
FTP軟體可以更好的幫助你管理FTP目錄 提供更系統的工具
FTP工具推薦使用 cuteftp
http://www.onlinedown.net/soft/3065.htm
[編輯本段]主動和被動模式
FTP有兩種使用模式:主動和被動。主動模式要求客戶端和伺服器端同時打開並且監聽一個埠以建立連接。在這種情況下,客戶端由於安裝了防火牆會產生一些問題。所以,創立了被動模式。被動模式只要求伺服器端產生一個監聽相應埠的進程,這樣就可以繞過客戶端安裝了防火牆的問題。
一個主動模式的FTP連接建立要遵循以下步驟:
客戶端打開一個隨機的埠(埠號大於1024,在這里,我們稱它為x),同時一個FTP進程連接至伺服器的21號命令埠。此時,源埠為隨機埠x,在客戶端,遠程埠為21,在伺服器。
客戶端開始監聽埠(x+1),同時向伺服器發送一個埠命令(通過伺服器的21號命令埠),此命令告訴伺服器客戶端正在監聽的埠號並且已准備好從此埠接收數據。這個埠就是我們所知的數據埠。
伺服器打開20號源埠並且建立和客戶端數據埠的連接。此時,源埠為20,遠程數據埠為(x+1)。
客戶端通過本地的數據埠建立一個和伺服器20號埠的連接,然後向伺服器發送一個應答,告訴伺服器它已經建立好了一個連接。
[編輯本段]FTP和網頁瀏覽器
大多數最新的網頁瀏覽器和文件管理器都能和FTP伺服器建立連接。這使得在FTP上通過一個介面就可以操控遠程文件,如同操控本地文件一樣。這個功能通過給定一個FTP的URL實現,形如ftp://<伺服器地址>(例如,ftp://ftp.gimp.org )。是否提供密碼是可選擇的,如果有密碼,則形如:@ftp://<login>:<password>@<ftpserveraddress>。大部分網頁瀏覽器要求使用被動FTP模式,然而並不是所有的FTP伺服器都支持被動模式。[1][2]
[編輯本段]ftp 命令
1、FTP伺服器的登陸
匿名用戶:FTP 口令:FTP
用戶 :ANONYMOUS 口令:任何電子郵件
2、顯示文件信息:DIR/IS
3、下載文件:GET 文件名 (下載到當前目錄)
4、上傳文件:PUT 文件名
5、多文件下載:MGET
6、多文件上傳:MPUT
7、退出:BYE
8、幫助:HELP
[編輯本段]用途
在本地主機和遠程主機之間傳送文件。
[編輯本段]語法
ftp [ -d] [ -g ] [ -i ] [ -n ] [ -v] [ -f ] [ -k realm] [-q[-C]][ HostName [ Port ] ]
[編輯本段]描述
ftp 命令使用「文件傳送協議」 (FTP) 在本地和遠程主機或遠程主機之間傳送文件。
FTP 協議允許在使用不同文件系統的主機之間進行數據傳送。盡管協議在傳送數據中提供了很高的靈活度,它仍然不會嘗試保留特定於某個文件系統的文件屬性(如文件保護模式或修改時間)。而且,FTP 協議為文件系統的整體結構做了少許假設,且不提供或不允許諸如循環地復制子目錄這樣的函數。
請注意:如果您正在系統之間傳送文件,且需要保存文件屬性或遞歸地復制子目錄,請使用 rcp 命令。
[編輯本段]發布子命令
您可以在 ftp> 提示符中輸入子命令,執行類似這樣的任務:列出遠程目錄、更改當前的本地和遠程目錄、在單一請求中傳送多個文件、創建和除去目錄,以及轉義到本地 shell 執行 shell 命令。請參考子命令章節取得每個子命令的描述信息。
如果您執行 ftp 命令而不為遠程主機指定 HostName 參數,ftp 命令會立即顯示 ftp> 提示符,等待 ftp 子命令。要連接遠程主機,請執行 open 子命令。 當 ftp 命令連接到遠程主機時,ftp 命令在再次顯示提示符 ftp> 之前會提示輸入登錄名和密碼。如果遠程主機中未定義登錄名的密碼,ftp 命令將不成功。
ftp 命令解釋器(處理在 ftp> 提示符處輸入的全部子命令),會提供大多數文件傳送程序沒有的性能,如:
* 對 ftp 子命令處理文件名參數
* 將一組子命令集中成一個單一的子命令宏
* 從 $HOME/.netrc 文件中裝入宏
這些性能會幫助您簡化重復的任務,並允許您在 unattended 方式使用 ftp 命令。
命令解釋器將按照下列規則處理文件名參數:
* 如果為此參數指定了 -(連字元),則標准輸入 (stdin) 將用於讀取操作,而標准輸出用於寫入操作。
* 如果未應用前面的檢查,且文件名擴展已啟用(請參考 -g 標志或 glob 子命令),則解釋器將根據 C shell 的規則擴展文件名。啟用了文件名匹配替換以及在期待單一文件名的子命令中使用了模式匹配字元時,結果可能與期待的不一樣。
例如,append 和 put 子命令將拓展文件名,然後僅使用所生成第一個文件名。其它 ftp 子命令,如 cd、delete, get、mkdir、rename 和 rmdir 不會執行文件名拓展,並從字面上接受模式匹配字元。
* 對於 get、put、mget 和 mput 子命令,解釋器有能力在不同的本地和遠程文件名語法樣式之間進行翻譯和映射(請參考 case、ntrans 和 nmap 子命令),並且在本地文件名不是唯一的情況下有修改它的能力(請參考 runique 子命令)。另外,如果遠程文件名不是唯一的,則 ftp 命令可將指令發送到遠程 ftpd 伺服器,以修改遠程的文件名(請參考 sunique 子命令)。
* 使用雙引號 (" ") 指定包含空字元的參數。
請注意:ftp 命令解釋器不支持管道。也無需支持所有多位元組字元文件名。
要在互動地運行的時候結束 ftp 會話,請使用 quit 或 bye 子命令或 ftp> 提示符處的End of File (Ctrl-D) 按鍵順序。要在文件傳送未完成之前結束它,請按中斷按鍵順序。其預設「中斷鍵」序列是 Ctrl-C。stty 指令能用於重新定義該鍵系列。
ftp 命令在正常情況下會立即暫停正在發送(從本地主機到遠端主機)的傳輸。ftp 命令通過將 FTP ABOR 指令發送到遠程 FTP 伺服器,來暫停正在接收的傳輸(從遠程主機到本地主機),並廢棄所有傳入的文件傳送包(直到遠程伺服器停止發送它們為止)。如果遠程伺服器不支持 ABOR 指令,在遠程伺服器未發送所有請求的文件之前,ftp 命令不會顯示 ftp> 提示符。另外,如果遠程伺服器執行未期望的操作時,可能需要結束本地 ftp 進程。
安全性和自動登錄
如果「標準的」是當前認證方法:
ftp 命令也會通過將密碼發送到遠程主機來處理安全性,並許可自動登錄、文件傳送和注銷操作。
如果您執行 ftp 命令並指定遠程主機的主機名 (HostName), ftp 命令會嘗試建立一個對於指定主機的連接。如果 ftp 命令連接成功,ftp 命令會在當前目錄或主目錄中搜索本地的 $HOME/.netrc 文件。如果文件存在,ftp 命令會在文件中搜索啟動登錄過程的入口,在命令宏定義中搜索遠程主機。如果 $HOME/.netrc 文件或自動登錄項不存在,或是系統已使用 securetcpip 命令保護起來, ftp 命令會提示用戶輸入用戶名和密碼。不論命令行中是否指定 HostName 參數,該指令都會顯示此提示。
請注意: 排隊系統不支持多位元組主機名。
如果 ftp 命令找到指定主機的$HOME/.netrc 自動登錄項, ftp 會試圖使用該登錄項中的信息登錄遠程主機。ftp 命令也會載入任何在登錄項中定義的命令宏。在某些情況(例如,所需的密碼在自動登錄項中沒有列出來),ftp 命令會在顯示 ftp> 提示符之前提示輸入密碼。
一旦 ftp 命令完成自動登錄,如果宏是在自動登錄項中定義的,ftp 命令就會執行init 宏。如果init 宏不存在或未包含 quit 或 bye 子命令,ftp 命令將顯示 ftp> 提示符並等待子命令。
請注意: 在提示符或在 $HOME/.netrc 文件中指定的遠程主機名必須存在,並擁有在遠程主機中定義的密碼。否則,ftp 指令無效。
如果 Kerberos 5 是當前的認證方法:
ftp 命令會按在 IETF 草稿文擋 "draft-ietf-cat-ftpsec-09.txt" 定義的那樣將此拓展用於 ftp 規范。FTP 安全性擴展將使用「 InPattern 參數。除 $(美元符號)和 \$ (反斜杠,美元符號)以外,InPattern 參數中的所有字元,都是按字面意義處理的,並用作 InPattern 變數之間的定界符。例如,如果 InPattern 參數是 $1.$2 且遠程文件名是 mydata.dat,則 $1 的值是 mydata,$2 的值是 dat。
此 OutPattern 參數確定結果文件名。從 $1 到 $9 的變數將被它們從 InPattern 參數獲得的值替換,而變數 $0 將由原文件名替換。另外,如果 Sequence1 不為空,序列 [Sequence1,Sequence2] 將由 Sequence1 替換;否則它將由 Sequence2 的值替換。例如,子命令:
nmap $1.$2.$3 [$1,$2].[$2,file]
會從 myfile.data 或 myfile.data.old 中產生 myfile.data,從 myfile 中產生 myfile.file,從 .myfile中產生myfile.myfile。請使用 \ (反斜杠) 符號防止 OutPattern參數中 $(美元符號)、[(左括弧)、](右括弧)和 ,(逗號)的特殊意義。
non-print form non-print 子命令的同義詞。
ntrans ] 打開或關閉文件名字元翻譯機制。如果未指定任何參數,字元翻譯將關閉。如果參數已指定,在沒有指定目標文件名的時候,將為 mget 和 mput 子命令以及 get 和 put 子命令翻譯源文件名中的字元。
此子命令在本地和遠程主機使用不同的文件名約定和慣例時很有用。字元翻譯遵從 InCharacters 和 OutCharacters 參數設置的模式。匹配InCharacters 參數中字元的源文件名中的字元將由 OutCharacters 參數中對應的字元替換。
如果 InCharacters 參數指定的字元串比 OutCharacters 參數指定的字元串長,而且其在 OutCharacters 參數中無對應的字元,則 InCharacters 參數中的字元將被刪除。
open HostName [Port] 在由 HostName 參數所指定主機中建立對 FTP 伺服器的連接。如果可選的埠號已指定ftp 命令將嘗試連接該埠中的伺服器。如果已設置自動登錄功能(即,該 -n 標志沒有在命令行中指定), 則 ftp 命令就會試圖讓用戶登錄到 遠程 FTP 伺服器的全部響應。另外, ftp 會在傳輸完成後顯示所有文件傳送的統計信息。
G. 如何快速查看FTP目錄
方法一如下:
1、打開ftp管理工具刪除不需要的大量文件夾;
2、測試有的文件夾刪除不了,換一個ftp管理工具刪除;
3、打開瀏覽器,網路萬網,進入官網, 登錄主機用戶;
4、進入主機伺服器的控制台;
5、點擊有文件管理,使用文件刪除功能,進行刪除;
6、查看網路狀態,並用域名訪問文件測試。
方法二如下:
1、登陸主機操作平台;
2、點擊「獨立面板」;
3、點擊「你的域名」;
4、打開「文件管理器」;
5、勾選需要刪除的文件或文件夾, 同時勾選遞歸;
6、點擊「重設擁有者」;
7、設置一下777許可權;
8、勾選要刪除的文件,點擊「刪除」。