如何将Linux机器上的50GB以上的文件备份到远程的sftp帐户。
我的要求
我的解决scheme
目前我正在使用rsnapshot每天进行一次本地备份。 然后以rsnapshot方式存储每周,每月的备份。 然后每个月用tar进行一次完全备份,在发送给我的朋友之前,我使用gpg2进行encryption。
然后,我使用完整备份中的快照文件进行增量级别1备份。
但不幸的是,这并没有真正的工作。 因为每次执行rsnapshot时,我的文件都会得到新的date和其他东西。 它看起来像tar只使用date来validation文件是否已经改变。
问题
代码示例
这是我的脚本的简化版本,说明了这个问题。
cd ~ mkdir backup-test cd backup-test mkdir data mkdir rsync-copy mkdir backup # Create 10 10mb files for i in 0 1 2 3 4 5 6 7 8 9 do dd if=/dev/urandom of=data/file$i.txt bs=1048576 count=10 done # Simulate rsnapshot of my files. rsync data/* rsync-copy/ # Make full backup /opt/bin/tar c -g backup/full.snar rsync-copy --file backup/full.tar # Simulate rsnapshot of my files again. No changes in my files. rsync data/* rsync-copy/ # Make incremental backup, this will create a new full copy. cp backup/full.snar backup/inc.snar /opt/bin/tar c -g backup/inc.snar rsync-copy --file backup/inc.tar # Make incremental backup, this will not create a new full copy. # Because we haven't executed rsync, which sets dates and stuff. cp backup/inc.snar backup/inc2.snar /opt/bin/tar c -g backup/inc2.snar rsync-copy --file backup/inc2.tar
在我看来,你很高兴与rsnapshot,但不是与焦油。 如果是这样,解决scheme是用保留“快照”的“唯一更改”的东西replacetar。
在我的脑海中,我可以有两个简单的select:
在rsnapshot之后,找出最后一个和以前的快照之间的区别,只存储到一个tar文件中。 这可能是简单的diff ,一些标志告诉它不要检查内容提供确切的差异。 已更改的文件列表应该足够了。 另一种方法是编写一些脚本来同时处理快照和报告新文件以及具有不同inode编号的文件。
使用rdiff-backup ,它使用rsyncalgorithm,但是存储差异而不是传输它们。