最近在维护网站的时候,发出了一个非常好的FTP工具LFTP,可以方便地往FTP服务器上传、下载文件,其中最实用的功能莫过于同步网站的功能,可以从本地向服务步同步,也可以从服务器住本地进行同步,对于网站备份、恢复和修改来说十份方便。
LFTP是命令行下比较成熟的文件传输工具,它支持FTP、HTTP、FISH、SFTP、HTTPS和FTPS协议,另外还支持种子文件。LFTP的每一个操作都是有效的,这意味着,当下载或上传执行出错时,它会自动重新开始,这种功能非常适合网速慢或者机器IP地址经常发生变化的情况。
LFTP命令使用时有点像SHELL,可以使用&符号将任务转到后台执行,比如执行:(cd /path && get file) &,意思是进入path目录,下载file文件,以后台方式执行。在任务执行的过程中,使用CTR+Z将任务切换到后台执行,也可以使用WAIT将后台任务切换到前台执行。
下面为说说这个命令的使用方法吧,和FTP工具一样,可以直接打开,然后用o命令打开FTP服务器,再输入密码;也可以使用参数在命令里面带上地址、用户名:
lftp hostaaaaaaa@hostaaaaaaa.xincache1.cn
进入FTP服务器,最常用的功能无外乎上传文件、下载文件和同步文件,下面就着重讲解这三个命令:
一、上传文件
上传文件使用put和mput命令,一个用于上传单个文件,另一个用于上传多个文件,put命令的格式为:
put [-E] [-a] [-c] [-O base] lfile [-o rfile]
-o <rfile> 指定上传后文件的名称,如果忽略,则使用本地文件的名字,另外名称里面不能有通配符。
-c 使用这个参数可以续传或重新上传之前未传完或重新上传文件。
-E 如果上传成功,则删除本地的文件(注意本地要备份好)。
-a 使用ascii模式,如果忽略该参数,则使用二进制模式。
-O <base> 指定文件上传的目录,通常进入FTP服务器后可以使用CD来设置当前目录 ,所以该参数忽略,则使上传到当前目录。
mput [-c] [-d] [-a] [-E] [-O base] files
mput命令用于批量文件上传,文件名中可以使用通配符,比如files设置为 *,则意味着当前目录下的所有文件都要上传,包括目录以及目录里面的文件。它比put命令多一个参数,就是-d:
-d 如果上传的名件字中有目录 ,则先创建目录,再将文件上传到该目录中。
二、下传文件
get [-E] [-a] [-c] [-e] [-O base] rfile [-o lfile] …
get命令下载文件rfile,具体有以下参数:
-c 使用这个参数可以续传或重新上传之前未传完或重新上传文件。
-E 如果下载成功,则删除本地的文件(注意本地要备份好)。
-e 传输之前删除目标文件。
-a 使用ascii模式,如果忽略该参数,则使用二进制模式。
-O <base> 指定文件下载的目录,忽略该参数,则使下传到当前目录。
mget [-c] [-d] [-a] [-E] [-O base] files
mget批量下载指定的文件files,文件名称可以使用通配符,它比get 功能多一个参数:
-d 如果下载的名件字中有目录 ,则先创建目录,再将文件下载到该目录中。
三、网站同步
有时候需要将整个网站同步到本地用于备份,或者在本地修改后,再同步到FTP服务器上,LFTP有MIRROR功能,就是镜像。
mirror [OPTS] [source [target]]
参数非常简单,OPTS是选项,SOURCE指源目录,也就是本地目录,可以通过LCD命令来修改;TARGET指目标目录,也就是服务器目录,可以通过CD命令来修改。默认情况下,同步时会将当前目录下所有的文件和目录都下载下来,目录会自动创建。下面看看OPTS常用的几个参数:
-R, –reverse:反向镜像,即从本地向服务器同步数据,默认是正向的,即从服务器向本地镜像文件。
-n, –only-newer:同步数据时,只同步较新的文件。
-P, –parallel[=N]:同步时,同时传输N个文件,N就是同时进行的任务数。