2014-09-19 92 views
0

我想設置一個備份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。

+0

_「許多在該文件夾的文件較大的很少改變。」 _大多數備份腳本中使用硬連接,以節省空間,這情況。幸運的是,你不必重新發明輪子。只需安裝像['rsnapshot'](http://www.rsnapshot.org/)這樣的備份腳本並使用它。 – John1024 2014-09-19 06:11:23

+0

謝謝。我仍然很好奇我在做什麼,但是我看了一下rsnapshot,看起來很有趣! – mdv 2014-09-20 11:36:35

+0

rsnapshot也有你可能想要考慮的競爭者:dirvish,ccollect等等。關於你的'find' +'tar'命令,如果有任何明確的問題,我希望現在有人會發佈一個答案。 – John1024 2014-09-20 20:30:01

回答

2

首先,我不知道,如果它被認爲是不好的形式或不回答自己的問題,但我無論如何做它,因爲我意識到自己的錯誤,我想關閉這一點,並希望能夠幫助別人與我有同樣的問題。現在

,一旦我意識到我做錯了什麼我坦率地說我有點不好意思,我沒看出來以前,但這是:

我沒有在命令行中,一段時間後,一些實驗運行我意識到輸出不僅列出所有文件,還列出了目錄本身。目錄當然也是文件,並且它們小於100M,所以它們(最有可能是)被包括在內,當它們被包括時,它們中的所有文件也被包括在內,而不管它們的大小如何。這也可以解釋爲什麼輸出文件比預期大五倍。

因此,爲了克服這一點,我添加-type f,其中僅包括普通文件,以find命令你瞧,它的工作!

總括來說,調整的命令我使用較小的文件現在是:

/usr/bin/find /other/projects -size -100M -type f -print0 | /usr/bin/xargs -0 /bin/tar -rvPf /backup/PRJ-files_$FILE_END.tar 
+0

[回答您自己的問題](http://stackoverflow.com/help/self-answer)非常好。 – fedorqui 2014-09-28 11:49:59

+0

如果超過100MB的文件進入LARGE.tar,並且100MB以下的文件進入PRJ.tar ...準確地100MB的文件去哪裏? ;-) – 2014-09-28 15:12:28

+0

@Mark Setchell:哈!是的,當我設定這些規則時,確實發生了這種情況,因爲我在處理限制時通常會考慮這些規則,但是因爲這是一項業餘愛好項目,所以我不確定如何使用find選擇忽略至少現在是這樣。我應該得到一個精確到100M的文件,我將不得不解決這個問題(或者爲100M文件添加一個小文本文件)。 – mdv 2014-09-29 14:12:04