2010-02-08 87 views
2

我想讓rsnapshot備份Linux機器上的本地磁盤SVN存儲庫。我知道我不能將它從文件系統備份下來,所以在每個快照之前,我正在使用'svnadmin hotcopy'進行復制。但是,每次我執行hotcopy時,生成的文件都有當前的時間戳,而不是與原始文件相同的時間戳。這意味着我無法執行rsnapshot提供的寫入時複製式磁盤空間保存功能。如何在每次時間戳不同時使用rsnapshot備份SVN存儲庫?

我想到的一種解決方案是讓腳本查看hotcopy($ DEST)中的所有文件,並根據文件$ SOURCE/x設置每個文件x的時間戳。我不知道是否有辦法讓rsync在Linux上執行此操作(我知道您可以在Windows上的Robocopy中執行該操作)但是,我確定可以使用find和touch來完成此操作。

建議如何做到這一點,或其他解決方案,歡迎。我寧願不使用增量式svn轉儲,因爲我希望當時每個時間點快照都是存儲庫的完整副本。

回答

0

原來上的所有文件改變時間戳並沒有那麼困難:

cd /var/local/backup/svn 
find . -exec touch -r /data/src/svn/\{\} \{\} \; 

這將確保存在於熱複製備份的文件的時間戳具有相同的時間戳他們的父母,這意味着它們只應在更新原件時更新。

+1

這聽起來很危險。如果有人在執行'svnadmin hotcopy'和執行'touch'之間對存儲庫進行了更改,那麼這些文件的時間戳將無法準確地表示其內容。因此,在未來的備份中,您可能無法複製應該複製的文件。 – 2010-02-08 23:55:54

+0

由於我們每4小時進行一次滾動拷貝,因此在交通量非常低的存儲庫中,我認爲這不是主要問題;但我同意你的看法,這是一個混亂,能夠在hotcopy期間正確設置時間戳是一個更好的解決方案。 – crb 2010-02-09 09:58:39