现在行形形色色的备份工具有很多,眼花缭乱,在网上找了很久,终于发现一款适合我的。我的需求其实不复杂,能自动备份、增量备份、同时保留多个备份,一些文件被修改了,如果没及时发现,可以去以前的备份找。
duplicati简介
duplicati是一款免费的、开源的备份软件,使用C#语言开发,支持Windows、Linux以及MacOS,可以把备份到远程服务器或者云计算平台上,比如Amazon S3、Google Drive、SkyDrive、Rackspace Cloud Files等。duplicati的备份维护机制也很完善,定时删除早期备份、备份的时候上传带宽的限制等等。
优点
速度快
备份前对数据进行了压缩和打包,可以自定义每个包的大小。在备份小文件,特别是图片、网页文件时特别有用。
安全性好
在对数据打包的时候,可以对数据进行AES-256加密,比原文件直接备份要安全很多。
灵活强大
支持FTP,SkyDrive,亚马逊S3等云存储,并且可以很灵活地根据需求来配置。
缺点
图形界面需用户登录
计划任务的执行需要登录,否则会挂起,等你再次登录的时候执行。不过下一个版本的duplicati将不再有这样的烦恼,从roadmap可以看到,duplicati 2.0将以系统服务的形式安装,支持后台运行。
命令行时暴露登录信息和加密密码
一般不会每天登到服务器上,如果要想让duplicati后台运行,我们只能使用命令行的方式,但是在命令行中,我们会暴露我们的登录信息和加密的密码,如果被不法分子拿到,等于白备份了。等duplicati 2.0发布,这个问题也将解决。
使用说明
图形界面使用
duplicati设置向导
输入备份的名称
可以直接备份"我的文档"目录或者选择自定义的备份目录,可以选择多个目录。
设置备份的AES-256加密密钥。
选择备份的存储地方,支持FTP、Google Drive、SkyDrive等等。
使用FTP备份的向导,输入FTP的登录信息等即可备份,官网上有其他存储地方的说明。
高级设置,设置备份的频率、删除时间等。
设置任务计划备份。
设置删除过期备份。
完成备份向导。
命令行
duplicati的命令行功能很强大,备份、删除、还原都可以搞定。配合Windows的任务计划,可以搞定不登录情况下的备份。我这里介绍下简单的FTP备份和删除,详细的可以执行命令Duplicati.CommandLine help来查看。
备份
backup <source folder> <target url> <options>
--auto-cleanup 删除不属于备份的其他文件,或者备份过程中,出错了的不需要了的文件。
--full 做完整备份。如果没有定义,那么第一次做完整备份,后面做增量备份。
--full-if-older-than = <date> 到一定的时间后做完整备份。
--full-if-more-than-n-incrementals = <number> 在做n个增量备份后做完整备份。
--passphrase = <passphrase> 用来保护备份文件的密码。
--volsize = <size> 每个卷的大小,默认是10MB,如果备份文件比较大,可以把这个卷设置大一点。
删除
delete-all-but-n-full <number> <target url> 仅保留N个完整备份
delete-all-but-n <number> 仅保留N个备份
delete-older-than <date> <target url> 仅保留一定时间的备份
--force 当删除备份文件的时候,duplicati只会列出要删除的文件名,加了force这个参数,从会删除备份的文件。
FTP
--ftp-passive = true 定义使用被动模式
--ftp-password FTP登录密码
--ftp-username FTP用户名
命令行例子
把duplicati安装目录加到系统环境路径下之后,可以直接执行Duplicati.CommandLine命令。
备份例子
Duplicati.CommandLine backup "D:\source" "ftp://10.48.78.194/source" --ftp-username=ezloo --ftp-password=backup --full-if-more-than-n-incrementals=9 --auto-cleanup --passphrase=123456 --volsize=20MB >> d:\duplicati\logs.txt
删除例子
Duplicati.CommandLine delete-all-but-n 3 --force --ftp-username=ezloo --ftp-password=backup "ftp://10.48.78.194/source" --passphrase=123456 >> d:\duplicati\delete.txt
>> d:\duplicati\logs.txt 把日志写入到文件里面
使用注意事项
1、在备份的时候,如果duplicati发现source文件没发生任何变化,那么它是不会生成备份的。
2、在命令行删除过期备份的时候,需要提供密码。
3、当备份多个目录的时候,目录最后的"\"要删掉,正确的写法"C:\source1;D:\source2"。