RSync单个(存档)文件,每次都会更改

Mic*_*jen 6 backup rsync remote-server space-efficiency single-file

我正在开发一个开源备份实用程序,它可以备份文件并通过FTP/SFTP/SCP协议将它们传输到各种外部位置,如Amazon S3,Rackspace Cloud Files,Dropbox和远程服务器.

现在,我收到了进行增量备份的功能请求(如果所做的备份很大并且转移和存储成本很高).我一直在环顾四周,有人提到了这个rsync实用程序.我对此进行了一些测试,但我不确定这是否合适,所以希望听到任何有经验的人rsync.

让我简要介绍一下备份时会发生什么.基本上它会开始转储MySQL,PostgreSQL,MongoDB,Redis等数据库.它可能需要文件系统中的一些常规文件(如图像).一旦一切就绪,它将把它们全部捆绑在一个.tar中(另外它将使用gzip和压缩和加密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,您可以建议使用任何实用程序吗?

任何反馈都非常感谢!

小智 8

gzip的性质是这样的,在源文件中的微小变化可能会导致非常大的变化所产生的压缩文件 - gzip的将要压缩,你给它的数据的最佳方式,每次自己的决定.

gzip的某些版本有--rsyncable哪些设置块大小,在gzip压缩作品一样的rsync的,这将导致一个稍微不那么高效的压缩(在大多数情况下),但限制了更改输出文件的输出同一区域开关file作为源文件中的更改.

如果这是你无法使用,那么它通常最好rsync的未压缩的文件(使用rsync自己的压缩,如果带宽是一个考虑因素),并在年底压缩(如果磁盘空间是一个考虑因素).显然这取决于您的用例的具体情况.


Pis*_*3.0 6

它只发送它所发送的内容 - 只转移更改的部分是其中一个主要特征rsync.它使用了一些相当聪明的校验和算法(并且它通过网络发送这些校验和,但这可以忽略不计 - 比传输文件本身少几个数量级的数据;在你的情况下,我假设它是.01in 200.01M)并且只传输那些它需要的零件.

另请注意,已经存在基于rsync的非常强大的备份工具 - 即Duplicity.根据代码的许可,可能值得看看他们是如何做到这一点的.