2012-09-08 167 views
150

可能重複:
gzipping up a set of directories and creating a tar compressed file如何gzip壓縮所有文件中的所有子目錄成一個壓縮文件中的bash

This post介紹如何在目錄結構中的單獨gzip壓縮每個文件。但是,我需要做一些稍微不同的事情。我需要爲某個目錄下的所有文件生成一個大的gzip文件。我還需要能夠指定壓縮文件的輸出文件名(例如files.gz),並覆蓋舊壓縮文件文件(如果已存在)。

+0

'就其本質gzip'只壓縮單文件。要將多個文件放入一個文件中供後續gzipping使用,請使用'tar'。 – Thomas

回答

310
tar -zcvf compressFileName.tar.gz folderToCompress 

一切folderToCompress會去compressFileName

編輯:審查並提出意見後,我意識到,人們可能會感到困惑與compressFileName沒有擴展名。如果你想要的話,你可以使用壓縮文件名.tar.gz擴展名(建議)

+1

謝謝。這會壓縮「folderToCompress」下的所有內容(即遞歸)嗎? – Doug

+1

folderToCompress中的所有內容都將壓縮文件名 – amitchhajer

+73

您可能想要選擇'compressFileName',因此它包含'.tar.gz'擴展名,否則您會讓其他人都瘋狂。 – drewish

15

@amitchhajer的帖子適用於GNU tar。如果有人發現這篇文章,需要它到非GNU系統上工作,他們可以這樣做:

tar cvf - folderToCompress | gzip > compressFileName 

要展開存檔:

zcat compressFileName | tar xvf - 
+2

除了可移植性以外,如果您想將參數傳遞給gzip(例如--test或--best),此解決方案很有用,因爲afaik甚至GNU tar沒有提供將參數發送到gzip的方法。 –

+0

這是多功能的,因爲您也可以使用其他壓縮機。例如'pigz',因爲它可以更好地利用cpu(一個zip的多線程實現),所以速度更快。 –

51

有很多的工作遞歸命令壓縮方法並且很高興知道誰是最終受衆。

即如果要發送給某人運行Windows,然後壓縮很可能是最好的:

zip -r file.zip folder_to_zip 

unzip filenname.zip 

對其他Linux用戶或你的自我焦油是偉大

tar -cvzf filename.tar.gz folder 

tar -cvjf filename.tar.bz2 folder # even more compression 

#change the -c to -x to above to extract 

我們必須要小心與焦油和事情如何tarred /提取,例如如果我跑

cd ~ 
tar -cvzf passwd.tar.gz /etc/passwd 
tar: Removing leading `/' from member names 
/etc/passwd 


pwd 

/home /名爲myUsername

tar -xvzf passwd.tar.gz 

這將創造 /家庭/名爲myUsername/etc/passwd文件

不確定的,如果焦油的所有版本中做到這一點:

Removing leading `/' from member names 
+4

針對linux-> windows的+1 –

相關問題