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、勾选要删除的文件,点击“删除”。