我正在开发一个开源备份实用程序,它可以备份文件并通过 FTP/SFTP/SCP 协议将它们传输到各种外部位置,例如 Amazon S3、Rackspace Cloud Files、Dropbox 和远程服务器。
现在,我收到了关于进行增量备份的功能请求(以防所做的备份很大并且传输和存储变得昂贵)。我一直在环顾四周,有人提到了该rsync
实用程序。我对此进行了一些测试,但不确定这是否合适,所以想听听任何有经验的人的意见rsync
。
让我简要介绍一下进行备份时会发生什么。基本上它会开始转储数据库,如 MySQL、PostgreSQL、MongoDB、Redis。它可能需要来自文件系统的一些常规文件(如图像)。一切就绪后,它将全部捆绑在一个 .tar 中(此外,它将使用gzip
and对其进行压缩和加密openssl
)。
完成后,我们有一个文件,如下所示:
mybackup.tar.gz.enc
现在我想将此文件传输到远程位置。目标是降低带宽和存储成本。所以让我们假设这个小备份包1GB
的大小差不多。因此,我们使用rsync
将其传输到远程位置并在本地删除文件备份。明天将生成一个新的备份文件,事实证明在过去 24 小时内添加了更多数据,我们构建了一个新mybackup.tar.gz.enc
文件,看起来我们1.2GB
的大小已经达到了。
现在,我的问题是:是否可以仅转移200MB
过去 24 小时内添加的内容?我尝试了以下命令:
rsync -vhP --append mybackup.tar.gz.enc backups/mybackup.tar.gz.enc
结果:
mybackup.tar.gz.enc 1.20G 100% 36.69MB/s 0:00:46 (xfer#1, to-check=0/1)
发送 200.01M 字节
接收 849.40K 字节
8.14M 字节/秒
总大小为 1.20G
加速为 2.01
看着sent 200.01M bytes
我会说数据的“附加”工作正常。我现在想知道的是,它是否传输了整个文件1.2GB
以便弄清楚要附加到现有备份的数量和内容,还是真的只传输200MB
? 因为如果它传输了整个文件1.2GB
,那么我看不出它与scp
在单个大文件上使用该实用程序有何不同。
另外,如果我想要完成的工作完全有可能,你推荐什么标志?如果无法使用rsync
,是否可以推荐使用任何实用程序?
非常感谢任何反馈!