2012-11-23 110 views
1

我想寫一個bash腳本在Ubuntu做一些文件的副本..我正在一個小的Android項目,每週翻譯應用程序。我很bash腳本,所以請耐心等待)從源目錄同步/複製文件夾只有當目標目錄中存在文件夾

我想我的腳本檢查目標目錄,看看我的源目錄是否包含相同的文件夾。如果確實如此,它應該將我的源文件夾複製(並在必要時覆蓋)到目標目錄,以保留結構。但也可以在這些源文件夾中添加任何額外的文件和文件夾。

比方說,我的源代碼目錄中有folder1,folder2,folder3,但目標目錄中只有folder1和folder2。然後我只需要將源文件夾中的folder1和folder2複製到目標文件夾。

目標目錄的內容經常變化,這就是爲什麼我需要檢查之前它複製文件夾/文件。

順便說一下,在源和目標目錄中的文件夾命名,如:folder1.apk - 它有一個擴展,所以它看起來像一個文件..

希望我提供足夠的信息;)

編輯:

我落得這樣做:

for dir in `find * -maxdepth 0 -type d`; do 
    cp -r -f /source/$dir /destination 
    done 

不知道這是最好的辦法,但似乎做的工作;)

回答

1

你可能會看看rsync工具,它有很多選項和易於使用(不需要使用自己的腳本)。例如,將在你的情況是有用的選項之一:

--existing    skip creating new files on receiver 

因此,下面應該做的工作:

rsync -vur --existing ~/project/source /mnt/target/ 

而且,你可以同步文件可能的好處之一如果您需要甚至將其用作守護程序來自動同步文件,則可以通過網絡以相同的方式進行。

+0

謝謝。但是這個問題是,如果我在源目錄和目標目錄中找到匹配的目錄,我有時會在源文件夾中包含額外的/新的文件和文件夾,然後它們不會被複制。這是確定是否應複製內容的主要/頂級文件夾。 – user1170663

+0

你也可以'rsync src/* dst /' – tripleee

+0

@ user1170663我相信你可以通過播放它的選項來實現目標,例如--files-from = FILE選項允許指定你需要的確切文件列表同步。 – pmod

相關問題