Linux/Unix:lftp命令以镜像文件和目录
如何使用lftp命令从远程FTP服务器镜像文件?
在Linux和Unix之类的操作系统下,如何使用lftp命令将整个目录从本地磁盘放置到远程FTP服务器(反向镜像)?
lftp命令是一个文件传输程序,它允许与其他主机的复杂FTP,HTTP和其他连接。
lftp命令具有内置的镜像,可以下载或更新整个目录树。
还有一个反向镜像(镜像-R),用于上载或更新服务器上的目录树。
镜像还可以使用FXP(如果有)在两个远程服务器之间同步目录。
语法为:
mirror mirror options mirror -c mirror -R
关于文件传输/镜像选项和数据安全性的说明
请注意,lftp可以使用FTP,FTPS(安全选项),HTTP,HTTPS(安全选项),HFTP,FISH,SFTP和文件支持多种文件访问方法。
仅当系统上已安装并配置了OpenSSL时,安全选项才有效。
我建议您仅使用FTPS/HTTPS或通过VPN使用FTP/HTTP。
示例:如何从远程ftp服务器镜像文件(获取文件)
首先,您需要使用以下语法连接到远程ftp服务器:
lftp ftp.theitroad.local
或者
lftp ftps.theitroad.local
输入用户名和密码:
lftp ftp.theitroad.local:~> user [email protected]
输出示例:
Password: lftp [email protected]@rawlogs.bitgravity.com:~>
执行ls命令以查看文件列表:
lftp ftp.theitroad.local:~> ls
输出示例:
-rw-r--r-- 1 80 www 36809419 Jun 24 23:59 2012-06-24.log.gz -rw-r--r-- 1 80 www 100912271 Jun 25 23:59 2012-06-25.log.gz -rw-r--r-- 1 80 www 102926055 Jun 26 23:59 2012-06-26.log.gz
要在当前目录中镜像以上所有文件,请执行:
lftp ftp.theitroad.local:~> mirror
使用mirror lftp命令,您可以将源目录指定为本地目标目录。
如果目标目录以斜杠结尾,则源基本名称将追加到目标目录名称之后。
源和/或目标可以是指向目录的URL。
语法为:
lftp ftp.theitroad.local:~> mirror source target
或者
lftp ftp.theitroad.local:~> mirror logs/ /data/wwwlogs
我强烈建议您使用恢复选项开始镜像作业。
这可以确保如果ftp镜像由于网络连接而失败,那么它只会下载部分文件
lftp ftp.theitroad.local:~> mirror -c source target
或者
lftp ftp.theitroad.local:~> mirror --continue
要仅下载较新的文件(-c将不起作用):
lftp ftp.theitroad.local:~> mirror --only-newer
或者
lftp ftp.theitroad.local:~> mirror -n
您可以使用以下语法并行下载文件(" -P"(大写P)或" --parallel = N")来加快ftp镜像操作:
lftp ftp.theitroad.local:~> mirror -P
要并行下载10个文件,请执行:
lftp ftp.theitroad.local:~> mirror --parallel=10
您可以使用pget传输每个文件:
lftp ftp.theitroad.local:~> mirror -c --use-pget-n=10
示例:如何将镜像文件反向到远程ftp服务器(放置文件)
您需要传递-R或--reverse选项来进行反向镜像,即将本地磁盘上的所有文件放到远程ftp服务器上,包括子目录和其中的所有文件。
在此示例中,将/home/project/website/version5 /反向镜像到名为ftp.theitroad.local的远程ftp服务器:首先,您需要使用以下语法连接到远程ftp服务器:
lftp ftp.theitroad.local
输入用户名和密码:
lftp ftp.theitroad.local:~> user [email protected]
输出示例:
Password: lftp [email protected]@rawlogs.bitgravity.com:~>
将本地目录更改为/home/project/website/version5 /:
lftp ftp.theitroad.local:~> lcd /home/project/website/version5/
输出示例:
lcd ok, local cwd=/home/project/website/version5
要上传,请执行:
lftp ftp.theitroad.local:~> mirror -R
或按以下方式设置本地目录和远程上传目录:
lftp ftp.theitroad.local:~> mirror -R /home/Hyman/projects/website/version10 /var/www/html
使用-R时,第一个目录是本地目录,第二个目录是远程目录。
如果省略第二个目录,则使用第一个目录的基本名称。
如果省略两个目录,则使用当前的本地和远程目录。
如果目标目录以斜杠(根目录除外)结尾,那么将追加源目录的基本名称。
要退出ftp会话,请执行:
lftp ftp.theitroad.local:~> quit
lftp镜像命令选项的完整列表
从手册页中获取:
-c, --continue continue a mirror job if possible -e, --delete delete files not present at remote site --delete-first delete old files before transferring new ones --depth-first descend into subdirectories before transferring files -s, --allow-suid set suid/sgid bits according to remote site --allow-chown try to set owner and group on files --ascii use ascii mode transfers (implies --ignore-size) --ignore-time ignore time when deciding whether to download --ignore-size ignore size when deciding whether to download --only-missing download only missing files --only-existing download only files already existing at target -n, --only-newer download only newer files (-c won't work) --no-empty-dirs don't create empty directories (implies --depth-first) -r, --no-recursion don't go to subdirectories --no-symlinks don't create symbolic links -p, --no-perms don't set file permissions --no-umask don't apply umask to file modes -R, --reverse reverse mirror (put files) -L, --dereference download symbolic links as files -N, --newer-than=SPEC download only files newer than specified time --on-change=CMD execute the command if anything has been changed --older-than=SPEC download only files older than specified time --size-range=RANGE download only files with size in specified range -P, --parallel[=N] download N files in parallel --use-pget[-n=N] use pget to transfer every single file --loop loop until no changes found -i RX, --include RX include matching files -x RX, --exclude RX exclude matching files -I GP, --include-glob GP include matching files -X GP, --exclude-glob GP exclude matching files -v, --verbose[=level] verbose operation --log=FILE write lftp commands being executed to FILE --script=FILE write lftp commands to FILE, but don't execute them --just-print, --dry-run same as --script= --use-cache use cached directory listings --Remove-source-files remove files after transfer (use with caution) -a same as --allow-chown --allow-suid --no-umask