我如何备份50GB的Linux文件夹上的文件到远程的SFTP帐户

如何将Linux机器上的50GB以上的文件备份到远程的sftp帐户。

我的要求

  • 存储多个版本的备份。
  • 在发送到远程服务器之前encryption。
  • 磁盘和带宽效率,认为增量。
  • 使用简单的linux命令(在Synology Diskstation上Busybox的首选支持)

我的解决scheme

目前我正在使用rsnapshot每天进行一次本地备份。 然后以rsnapshot方式存储每周,每月的备份。 然后每个月用tar进行一次完全备份,在发送给我的朋友之前,我使用gpg2进行encryption。

然后,我使用完整备份中的快照文件进行增量级别1备份。

但不幸的是,这并没有真正的工作。 因为每次执行rsnapshot时,我的文件都会得到新的date和其他东西。 它看起来像tar只使用date来validation文件是否已经改变。

问题

  • 我能用这个解决scheme解决我的备份问题吗?
    • 一种方法是备份原始文件而不是rsnapshot / rsync副本。 但是目前我不太相信tar,也许会错过其他的东西。 我想要一些校验和或其他更多性能友好的魔法。
  • 我应该使用其他软件吗?

代码示例

这是我的脚本的简化版本,说明了这个问题。

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:

  1. 在rsnapshot之后,找出最后一个和以前的快照之间的区别,只存储到一个tar文件中。 这可能是简单的diff ,一些标志告诉它不要检查内容提供确切的差异。 已更改的文件列表应该足够了。 另一种方法是编写一些脚本来同时处理快照和报告新文件以及具有不同inode编号的文件。

  2. 使用rdiff-backup ,它使用rsyncalgorithm,但是存储差异而不是传输它们。