用ftp的get命令无法下载文件夹,这个时候可以用lftp的mirror命令:
基本用法
1、yum -y install lftp //安装lftp
2、lftp 192.168.1.124 //(或直接输入ftp的网址)登录远程ftp
3、user root //输入ftp用户名root (匿名ftp不用输入用户名和密码)
4、111111 //输入ftp密码(不回显)
5、mirror jsweb /opt/www //将ftp上的jsweb(文件夹名称)下载到本地的/opt/www
lftp mirror的高级应用举例
mirror –delete –only-newer –verbose work /opt/bak/
自动备份服务器work文件夹,到本地opt/bak文件夹下,并且删除已经不存在的文件,并且只下载最新的文件,再给出详细的输出。
用 lftp 的 -e 选项,把命令直接接在 lftp 之后:
lftp -u username,password -e”mirror –delete –only-newer –verbose /work bak/” ftpIP
也可以用 at 选项指定备份的时间:
lftp at 01:00 -u username,password -e”mirror –delete –only-newer –verbose /work bak/” ftpIP
这样每天 1 点就会执行备份任务。
###########################################################
lftp中mirror这个命令的其他参数
-c, --continue 支持断点续传if possible
-e, --delete 如果远程目录下已经没有某个文件,而本地有,则删除这个文件。
--delete-first 在下载新文件之前先删除旧的文件
-s, --allow-suid 保留远程目录中设定的用户及组权限
--allow-chown 设置下载文件的所有者和所属组
--ignore-time 屏蔽时间判定,这样mirror只通过大小来判断文件,同步速度可以加快。
-n, --only-newer 只下载新的文件,mirror的判定新文件是通过文件大小和修改时间来判定的(这时候-c不能使用)
-r, --no-recursion 不下载子目录中的文件,即没有递归的功能
-p, --no-perms 不设置下载后文件的访问权限
--no-umask don't apply umask to file modes #这个不知道怎么翻译
-R, --reverse 上传到FTP
-L, --dereference download symbolic links as files #这个不知道怎么翻译
-N, --newer-than=SPEC 只下载某个特定时间以后更新过的文件
-P, --parallel[=N] 同时下载N个文件
-i RX, --include RX 下载时包含的文件名称,RX表示正则表达式
-x RX, --exclude RX 下载时不包含的文件名称,RX表示正则表达式
-v, --verbose[=N] 关于操作的详细输出。
--log=FILE 将已经执行过的lftp命令写入文件
--script=FILE 将lftp命令写入文件,但不执行
--just-print, --dry-run same as --script=- #这个不知道怎么翻译
当你使用-R参数,第一个目录是本地,第二个目录是远程。
如果省略了第二个目录,就会使用第一个目录的名称作为上传后的目录名称。
如果省略第一和第二个目录,则使用当前的本地和远程目录。