我想設置一個備份shell腳本,應該在我的服務器上每週運行一次,並保持每週備份十週,並且一切運行良好,除了一件事...奇怪的結果使用Linux發現
我有一個包含許多相當大的文件的文件夾,這樣該文件夾的十大每週備份佔用相當大的磁盤空間和許多文件夾中的文件較大的很少改變,所以我想我會分割備份的文件夾分爲兩部分:一部分用於包含在「正常」每週備份(並保留十週)的較小文件,另一部分文件用於每週更新的較大文件,而不保留較早的每週版本。
我用下面的命令爲更大的文件:
/usr/bin/find /other/projects -size +100M -print0 | /usr/bin/xargs -0 /bin/tar -rvPf /backup/PRJ-files_LARGE.tar
按預期工作。 tar -v選項用於調試。然而,歸檔較小的文件時,我使用了一個類似的命令:
/usr/bin/find /other/projects -size -100M -print0 | /usr/bin/xargs -0 /bin/tar -rvPf /backup/PRJ-files_$FILE_END.tar
其中$ FILE_END是週數。上面的行不起作用。我有腳本運行的前一天,它花了幾個小時,併產生一個70 Gb的文件,雖然預期的輸出大小約爲14 Gb(有很多文件)。似乎在大文件中有一些文件的重複,但我還沒有能夠完全檢查。昨天我在命令行運行了上面的命令來查看較小的文件,我可以看到我知道包含大於100 Mb的文件。
不過,剛纔我在命令行中運行find /other/projects -size -100M
,並且生成文件列表預期。
因此,如果任何人有任何想法我做錯了我會很感激的提示或指針。文件名包括空格和各種字符,例如單引號,如果這與它有關。
我能想到的唯一的事情就是我沒有正確使用xargs,並且我對此並不是很熟悉,但我仍然認爲問題在於我使用find,因爲它會查找給出的輸入到xargs。
_「許多在該文件夾的文件較大的很少改變。」 _大多數備份腳本中使用硬連接,以節省空間,這情況。幸運的是,你不必重新發明輪子。只需安裝像['rsnapshot'](http://www.rsnapshot.org/)這樣的備份腳本並使用它。 – John1024 2014-09-19 06:11:23
謝謝。我仍然很好奇我在做什麼,但是我看了一下rsnapshot,看起來很有趣! – mdv 2014-09-20 11:36:35
rsnapshot也有你可能想要考慮的競爭者:dirvish,ccollect等等。關於你的'find' +'tar'命令,如果有任何明確的問題,我希望現在有人會發佈一個答案。 – John1024 2014-09-20 20:30:01