2016-07-01 38 views
1

我知道--ignore-existing選項,並且懷疑是否有稍微不同的東西。使用rsync進行備份而不被覆蓋

我的情況是:我有一個網絡服務器,有大量用戶上傳的圖片。現在大概是2TB。通常這些文件根本不會被修改。我使用rsync並將它們備份到其他服務器。

但是如果某個文件被破壞會怎麼樣?假設一個文件的一半消失了。它會複製到備份並覆蓋以前的正確文件,因此備份也會中斷。

我可以使用--ignore-existing。但是如果某個文件仍然發生變化(這很少,但可能)。有了這個選項,備份將不會有這個新文件。

我想備份文件的所有版本,如果它更改。可能嗎?也就是說:如果rsync定義該文件已經存在,它會將現有的舊文件移動到../previous-TIMESTAMP/oldFileHere之後,然後將新文件放到舊文件的位置。

有沒有辦法做到這一點?

回答

2

我想你想使用rsnapshot而不是rsync。它專門爲恢復舊版本的文件而構建。它在目錄~/.snapshots中以小時,每週和每月的方式提供文件版本控制。

如果您的文件很小,您甚至可以考慮將它們放在git回購庫中,而不是基於時間的基礎上對其進行版本控制。這就是我對數據庫,點文件和個人筆記所做的。

2

如果你不想使用rsnapshot,你可以使用的目標文件夾,像這樣的後綴:

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

注:

  • 的副本將是「智能」 - 如果源和目的地是一樣的,沒有新的時間戳備份將生成(這是好事)
  • 有一個選項使用子目錄,而不是文件後綴,但我沒有嘗試過自己。