利用 lftp 为VPS/其他系统镜像备份

安装: 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

评论关闭