使用lftp为vps做镜像备份

最近把vps的镜像备份调试完毕,已经开始正式用它备份文件了。

目前使用的是每天5点整开始对vps的网页文件目录做镜像,存储在godaddy的空间中,做的是增量备份,只上传更改/新增的文件。另外,如果源目录中文件有删除,则镜像中也删除。

实现这个功能,我使用的是lftp的mirror命令。

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 将执行过的命令写入日志文件

–script=FILE 把命令写入脚本文件但不执行

–just-print, –dry-run 同 –script=<>FILE

当使用 -R 参数时,第一个目录为本地目录,第二个为远程目录

如果第二项没有填写,则采用第一个个目录的名称

如果两项都没填写,则采用当前的本地和远程目录

那么,具体是如何实现的呢?

首先,在vps中安装lftp,centos可以用yum install lftp,而ubuntu一般都自带了,这一步不再赘述。

然后新建一个脚本,比如取名jobs.txt,存储在/home/root/目录下。jobs.txt内容如下:

open ftp://备份空间用户名:备份空间密码@备份空间的ftp服务器地址

mirror -R -v -n -e 源文件目录 目标站目录

e.g.

jobs.txt:

open ftp://usrname:passwd@backupspace.com

mirror -R -v -n -e /home/htdocs /mirror

即是将/home/htdocs目录下的所有文件镜像到ftp://backupspace.com/mirror目录下。

事实上,jobs.txt仅仅是给lftp使用的一个脚本文件,我们要做的是每天自动运行它。

新建sh脚本,如mirror.sh保存在/home/root/下。

mirror.sh:

#!/bin/bash

lftp -f /home/root/jobs.txt

然后用crontab添加/home/root/mirror.sh每天5点运行即可。

如果你的另一个备份空间也是vps,那么可以在那一台vps上采取正向镜像方式,而不是上述的反向镜像。

如果你没有备份空间,还可以使用自己的电脑备份,使用windows下的lftp程序。

这个程序是用cygwin模拟unix环境运行的,经测试可以正常使用,下载见附件。

在这里就不详述使用方法了,和上述方法类似,采用正向镜像只需要把-R参数去掉即可,sh换成bat并删除bash那一行,然后计划任务也罢,开机自动运行也行,除了第一次备份费点时间,增量备份并不会耗费太久。



发表评论

您的电子邮箱地址不会被公开。

3 + = 11