Ubuntu

rsync –link-dest 僅在有要更新的內容時創建文件夾

  • January 7, 2016

首先,我很難理解--update參數的作用。我認為沒有它,它會在邏輯上更新任何更改的文件,我相信這就是它的作用,那麼為什麼--update參數甚至存在呢?

其次,與我所問的有關,因為我認為它可以解決我的問題,但事實並非如此,我有一堆配置文件,每次更改時我都希望通過執行下面的 cronjob 將它們更新到不同的文件夾中每小時或每天命令一次,這樣我就可以有幾個以前的版本,以防出現問題。問題是這些文件很少更改,但是 rsync 會創建另一個帶有硬連結的文件夾,無論它是否更改,這有點煩人,因為你有很多相同的文件夾,即使它們是硬連結並且不佔用空間,它會造成很多混亂。

有沒有辦法阻止 rsync –link-dest 這樣做?也就是說,只有在發生任何變化時才創建文件夾,否則什麼也不做。似乎是一個非常基本的案例場景,所以我認為有一種簡單的方法可以使用參數來做到這一點,但我無法在任何地方找到答案。

rsync -azP --delete --stats --update --log-file=/var/log/rsync/apacheconf日期 +%F_%T.log -e "ssh -i /home/user/.ssh/id_rsa" /etc/apache2/sites-available --link-dest=/mnt/backup/apache2/apache user@xxx.xxx.xxx:/mnt/backup/apache2/apache日期 +%F_%T.log

關於--updatersync 手冊頁非常清楚:

-u, --update: skip files that are newer on the receiver. 這會強制 rsync 跳過目標上存在的任何文件,並且修改時間比源文件新。(如果現有目標文件的修改時間等於源文件的修改時間,則如果大小不同,它將被更新。)

如果沒有這個選項,src 上的舊文件可以覆蓋 dst 上的新文件。使用此選項,您可以確保較新的文件永遠不會被舊版本覆蓋。

對於第二個問題,只需避免使用--link-desk. 此選項的全部意義在於擁有完整的目錄/文件樹**,而無需**支付真實完整副本的空間。如果您不希望每次都有完整的樹,但只想查看更改的文件/目錄,請避免使用--link-desk

此外,為了提高文件傳輸過程的效率,您可以使用--compare-dest

--compare-dest=DIR此選項指示 rsync 使用目標電腦上的 DIR 作為附加層次結構,以比較目標文件與執行傳輸(如果目標目錄中缺少文件)。如果在 DIR 中找到與發件人文件相同的文件,則該文件將不會傳輸到目標目錄。這對於創建僅從早期備份更改的文件的稀疏備份很有用。

引用自:https://serverfault.com/questions/747499