安装: yum install -y lftp
lftp mirror的参数如下:
-c, –continue 如果可能, 继续一个镜像任务
-e, –delete 删除在远程站点不存在的文件
-s, –allow-suid 根据远程站点设置相应的 suid/sgid 位
-n, –only-newer 只下载新的文件 (-c 没有作用)
-r, –no-recursion 不下载子目录
-p, –no-perms 不设置文件权限
–no-umask 不在文件上使用umask
-R, –reverse 反向镜像 (上传文件)
-L, –dereference 下载符号链接指向的文件
-N, –newer-than FILE 只下载比文件 FILE 更新的文件
-i RX, –include RX 包括匹配的文件 (只能使用一次)
-x RX, –exclude RX 不包括匹配的文件 (只能使用一次)
RX 是括展的正则表达式
-t Nx, –time-prec Nx 设置时间精度为 N 秒 (x=s) 分钟 (x=m) 小时 (x=h) 或者天 (x=d) 默认值 – 12 小时
-v, –verbose 显示详细的信息
–log=FILE 将执行过的命令写入日志文件<FILE>
–script=FILE 把命令写入脚本文件但不执行
–just-print, –dry-run 同 –script=<>FILE
当使用 -R 参数时,第一个目录为本地目录,第二个为远程目录
如果第二项没有填写,则采用第一个个目录的名称
如果两项都没填写,则采用当前的本地和远程目录
那么,具体是如何实现的呢?
1、新建一个脚步, test.txt
test.txt 内容如下:
open ftp://备份空间用户名:备份空间密码@备份空间地址
mirror -R -v -n -e 源文件目录 目标站目录 (把-e去掉,就不会删除目标目录废弃的文件)
例如:
open ftp://lftptest:123456@192.168.3.11
mirror -R -v -n -e /root/test/ /public_html
即是将/root/test/目录下的所有文件上传到ftp://192.168.3.11/mirror目录下。
2、新建sh脚本, upload.sh
upload.sh 内容如下:
#!/bin/bash
lftp -f /root/test.txt
记得给 upload.sh 赋可执行权限: chmod 755 /root/upload.sh
3、设置自动任务
crontab -e
加入:
每天,4时
0 4 * * * /root/upload.sh;
每周六,4时:
0 4 * * 6 /root/upload.sh;
如果两边都是独立的操作系统或VPS,可使用rsync来同步文件。
参考设置
set ftp:charset gbk
set file:charset utf-8
set ftp:passive-mode off