2014-01-09 79 views
0

嗨,我的拳頭時間試圖寫一個bash腳本,所以我有點不好。Bash備份腳本。需要幫助找到一個文件,並閱讀它

我需要在主目錄中定位文件的幫助(該文件包含我想備份的文件列表)。在此之後,我想循環文件中的所有行並製作這些文件的副本。

這是我tryed,但它不似乎工作:

find /home$n -name .file_with_backup_register | while read line ; 
do cp "$line" /var/backup/temp; 
done 

當我嘗試讓我的焦油備份的腳本tar-czvf $(date +%m_%d_%Y) IL得到:

tar: Cowardly refusing to create an empty archive. 

所以即時猜測其劑量工作的find/home $ n ...行

+0

顯示如何將'tar'放入備份腳本。問題可能在於你如何指定要存檔的檔案。 – Barmar

+0

tar-czvf $(日期+%m_%d_%Y)im站在/ var/backup/temp中,並且想要使用名稱月,日,年製作完整目錄的tar – user3176770

+0

'while read' loop doesn讀取'.file_with_backup_register'文件的內容。它正在讀取'find'的輸出,它只是所有這些文件的列表。 – Barmar

回答

0

如果對「tar」使用「-T」選項,則可以指定包含要備份的文件名稱的文件的名稱。

tar -cv -T filelist -f tarball.tar 
+0

我想做一個完整目錄的焦油和即時通訊站在目錄,即時通訊運行tar-czvf $(日期+%m_%d_% Y)。但我認爲它的find/home ....行不工作。我在我的腳本中找到了一些行,它創建了我的臨時目錄,但它將任何文件都提交給目錄。 – user3176770

+0

告訴我們$ n是什麼。你可以運行「echo $ n」並告訴我們輸出。然後運行... find/home -name「.file * with *」 –

+0

嗨,我解決了我通過添加| xargs貓|在我的發現線,並解決了我的問題。但是你建議的方式似乎更容易。 – user3176770

0

您可以使用此:

$ find $HOME -name file_with_backup_register | xargs cat | xargs -I % cp % /var/backup/temp 

如果你不確定find是否成功的定位您的註冊文件,只需調用:

$ find $HOME -name file_with_backup_register 

,看看它的輸出有效位置。

編輯請參閱@ Barmar在您的問題下的評論,他可能是對的。儘管如此,以上答案也可能有用,因爲它簡化了您的解決方案。

+0

Xargs:無效的選項'-J'il當我嘗試這條線時,我得到了錯誤,但是我可以做出錯誤的東西,不真正理解那條線是如何工作的。 – user3176770

+0

@ user3176770 - 也許嘗試'-I'而不是'-J' – kamituel