使用rsync进行备份而不覆盖

时间:2016-07-01 13:27:28

标签: backup versioning rsync rsnapshot

我知道--ignore-existing选项,并想知道是否存在稍微不同的内容。

我的情况是:我有一个包含大量用户上传图片的网络服务器。现在约2TB。通常这些文件根本不会被修改。我使用rsync并将它们备份到其他服务器。

但是如果某个文件被破坏怎么办?假设,一半文件消失了。它将复制到备份并覆盖以前正确的文件,因此备份也会被破坏。

我可以使用--ignore-existing。但是,如果某些文件仍然被更改(这很少但可能),该怎么办?使用此选项,备份将不会有此新文件。

如果文件发生变化,我希望备份文件的所有版本。可能吗?也就是说:如果rsync定义该文件已经存在,它会将现有的旧文件移动到某个../previous-TIMESTAMP/oldFileHere,之后将新文件放在旧文件的位置。

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:6)

如果您不想使用rsnapshot,可以使用带有如下后缀的目标文件:

rsync --backup --suffix=`date +'.%F_%H-%M'` ~/life_story.txt /media/myusername/backupdrive/life_story.txt

注意:

  • 副本将是“智能” - 如果源和目标相同,则不会生成新的带时间戳的备份(这很好)
  • 可以选择使用子目录而不是文件后缀(--backup-dir),但我自己没有尝试过。

答案 1 :(得分:4)

我认为你想使用rsnapshot而不是rsync。它专门用于恢复旧版本的文件。它在~/.snapshots目录中按小时,每周和每月提供文件版本控制。

如果您的文件很小,您甚至可以考虑将它们放在git回购中,而不是基于时间进行修改。这就是我对数据库,点文件和个人笔记的处理方式。