すべてのサブディレクトリのすべてのファイルをbashの1つの圧縮ファイルにgzipする方法


201

重複の可能性:
一連のディレクトリをgzipしてtar圧縮ファイルを作成する

この記事では、ディレクトリ構造内で各ファイルを個別にgzipする方法について説明します。しかし、少し違うことをする必要があります。特定のディレクトリの下にあるすべてのファイルに対して1つの大きなgzipファイルを作成する必要があります。また、圧縮ファイル(files.gzなど)の出力ファイル名を指定し、古い圧縮ファイルが既に存在する場合はそれを上書きできるようにする必要もあります。


gzipその性質上、単一のファイルのみを圧縮します。後続のgzip圧縮のために複数のファイルを1つのファイルに入れるには、を使用しますtar
Thomas

回答:


387
tar -zcvf compressFileName.tar.gz folderToCompress

folderToCompress内のすべてがcompressFileNameに移動します

編集:レビューとコメントの結果、拡張子のない圧縮ファイル名と混乱する可能性があることに気付きました。必要に応じて、compressFileNameで(推奨される).tar.gz拡張子を使用できます。


2
ありがとう。これは "folderToCompress"の下のすべてを(つまり、再帰的に)圧縮しますか?
Doug

2
folderToCompress内のすべてがcompressFileNameに移動します
amitchhajer

80
あなたはおそらくcompressFileNameそれが.tar.gz拡張を含むように選択したいと思うでしょう、さもなければあなたは他のみんなを狂わせます。
2013年

9
これは、任意の数のディレクトリに対しても機能しtar -zcvf two-dirs.tar.gz dir-one dir-twoます。たとえば、2つのディレクトリを含むアーカイブを作成します。
ゾルタン2014年

5
また*、現在のディレクトリのすべてを圧縮するためにも機能します。tar -zcvf all.tar.gz *

61

再帰的にコマンドラインで機能する圧縮方法は多数あり、エンドユーザーが誰であるかを知るのは良いことです。

つまり、Windowsを実行している誰かに送信する場合は、おそらくzipが最適です。

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

たとえば、実行した場合、タールと物事がどのようにタールアップ/抽出されるかに注意する必要があります

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


pwd

/ home / myusername

tar -xvzf passwd.tar.gz

これにより/ home / myusername / etc / passwdが作成されます

tarのすべてのバージョンがこれを行うかどうか不明です:

 Removing leading `/' from member names

18

@amitchhajerの投稿はGNU tarで機能します。誰かがこの投稿を見つけて、それをNON GNUシステムで機能させる必要がある場合、次のことができます。

tar cvf - folderToCompress | gzip > compressFileName

アーカイブを展開するには:

zcat compressFileName | tar xvf -

2
移植可能であることに加えて、このソリューションは、gzipに引数を渡したい場合(たとえば、-testまたは--best)に役立ちます。これは、GNU tarでさえ、gzipに引数を送信する方法を提供していないためです。
ティモシーウッズ

他のコンプレッサーも使用できるため、これは用途が広いです。たとえばpigz、cpuをよりよく利用できるため、より高速です(zipのマルチスレッド実装)。
Ortwin Angermeier 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.