8

我知道--ignore-existing选项,想知道是否有一些不同的东西。

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

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

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

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

有没有办法做到这一点?

4

2 回答 2

16

--备份 --后缀=

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

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

笔记:

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

抱歉,这是错误的答案,请参阅我的其他答案

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

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

于 2016-07-01T15:44:05.707 回答