使用 rsync 进行备份而不覆盖

Use rsync for backup without overwrite

我知道 --ignore-existing 选项,想知道是否有细微差别。

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

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

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

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

有办法实现吗?

对不起,这是错误的答案,请参阅我的其他答案

我认为您想使用 rsnapshot 而不是 rsync。它专为恢复旧版本的文件而构建。它在目录 ~/.snapshots.

中提供每小时、每周和每月的文件版本控制

如果您的文件很小,您甚至可以考虑将它们放在 git 存储库中,以修改为基础而不是时间为基础对它们进行版本控制。这就是我对我的数据库、点文件和个人笔记所做的。

--备份--后缀=

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

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

注:

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