將目錄備份到已經有舊備份的目的地?
我想將筆記型電腦上的一些目錄備份到外部硬碟驅動器。
外部硬碟驅動器中的目標已經在我的筆記型電腦上擁有該目錄的較舊備份。
- 我想知道如何更新外部硬碟驅動器上的備份?例如,以下命令會按預期工作嗎?
rsync -a --delete /path/to/source/dir /path/to/dest/dir
它的工作方式和我一樣嗎?
rm -r /path/to/dest/dir/*
然後rsync -a /path/to/source/dir /path/to/dest/dir
? 2. 如何rsync
利用目標上的舊備份更快地創建新備份而不會出錯(自上次備份以來某些文件可能已更改,但更多文件沒有)?利用舊備份的另一個原因是我的外部硬碟驅動器沒有足夠的空間來保存新備份而不刪除任何內容。謝謝。
- 通過利用目標上的舊備份(自上次備份以來某些文件可能已更改,但更多文件沒有),如何使 rsync 更快地創建新備份而不會出錯?
rsync
預設情況下,備份會執行此操作,如果您通過-a
(並根據@xenoid 的回答獲取正確的路徑)。而且你無論如何都想通過-a
,所以這一切都很好。具體原因有點微妙:Rsync 使用“快速檢查”算法(預設情況下)查找需要傳輸的文件,該算法查找大小或上次修改時間已更改的文件。
如果 rsync 認為一個文件不需要傳輸,那麼它就不會傳輸它。這是有效的,因為
-a
暗示了這個選項:-t, --times preserve modification times
所以備份文件上的最後修改時間與原始文件上的時間相同。
不犯錯誤
只是不要
rsync
通過修改文件的內容然後重置它們的最後修改時間來偽裝:-)。否則該文件將被忽略。我還沒有聽說這是一個問題,所以我不會擔心。
rsync
以這種方式用於基本備份很常見。我預計您更有可能遇到其他限制。即,如果您在不使用文件系統快照的情況下備份 $HOME,那麼您的 firefox 配置文件可能會在備份執行的同時被修改,並且您將不會在備份中獲得一致的工作 firefox 配置文件。或者您想要恢復已刪除/覆蓋的文件,但由於您沒有保留任何較舊的備份,因此它可能已經在備份中被刪除/覆蓋。
是的,
rsync
是一個很好的解決方案,但更好地使用(注意結尾的斜杠):rsync -a --delete /path/to/source/dir/ /path/to/dest/dir/
引用
man rsync
:源上的尾部斜杠會更改此行為,以避免在目標上創建額外的目錄級別。您可以將源上的尾隨 / 視為“複製此目錄的內容”而不是“按名稱複製目錄”
$$ … $$
有了
--delete
鏡像(完全相同的文件),沒有它,您將獲得附加備份(在源中刪除的文件保留在副本中)。危險
--delete
在於,如果您的目標目錄錯誤,許多文件可能會被刪除,因此最好將其使用限制在經過充分測試的腳本中,或者先使用-n
/--dry-run
來檢查會發生什麼。