2011-09-21 88 views
4

我試圖創建follwing命令tar文件模式:焦油排除

tar -cvf myFile.tar -X exclude-files.txt myContentDirectory 

和我排除文件已follwing模式排除:

**/*.bak 
**/*.db 
**/*.html 

但我沒有看到這些文件類型被排除在我的焦油中。 我在這裏做錯了什麼?

我發現,當我在排除-files.txt只有一個模式,可以說只有

**/*.bak 

它的工作。但不能與多個文件模式(每個ON換行)

+0

你剛試過'* .bak'嗎? –

+0

是的,我有。沒有運氣 – user620339

+0

你使用什麼版本的tar(和什麼操作系統)?我測試了這個使用OSX版本(焦油2.8.3),它工作正常... –

回答

4

我想這:

*.bak 
*.db 
*.html 

是,如果要排除特定的目錄,你可以做排除文件的正確格式:

some-dir/*.db 

而且您的命令應該是這樣的:

tar -cvf myFile.tar -X exclude-files.txt myContentDirectory 
+0

我試過上述命令,仍然無法正常工作。 – user620339

+0

我也試過這個,但是它工作正常,當你運行這個命令時你會得到什麼輸出結果? –

+0

剛剛編輯我的問題上面,請看看。該命令確實運行,但排除選項只適用於我的文件中只提到了一個模式。 – user620339

0

最有可能的C的順序ommand不正確。

焦油-cvf myFile.tar -X排除-files.txt myContentDirectory

應該像

焦油CV -X排除-files.txt -f myFile.tar myContentDirectory

PS。我沒有看過濾器本身。參數的最可能順序是問題。 如果問題出現在過濾器/模式中 - 使用--exclude選項逐個測試會更容易。

1

對不起,如果這個答案有點晚。

tar -cO --exclude=*.bak myContentDirectory | tar -O --delete '*.db' | tar -O --delete '*.html' > myFile.tar 

見,你在做什麼在這裏創造的焦油,但其發送到stdout,而不是到文件,然後通過管道到這一點焦油,刪除你不想要的東東,一個或更多的時間和最後將輸出寫入文件。

你甚至可以先測試這樣的:

tar -cO --exclude=*.bak myContentDirectory | tar -O --delete '*.db' | tar -O --delete '*.html' | tar -tv 

這會吐出所有剩餘的歸檔文件的列表。