web-dev-qa-db-ja.com

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

可能な重複:
ディレクトリセットを圧縮してtar圧縮ファイルを作成する

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

180
Doug
tar -zcvf compressFileName.tar.gz folderToCompress

folderToCompress内のすべてのものはcompressFileNameに移動します。

編集:レビューとコメントの後、私は人々が拡張子なしでcompressFileNameと混同されるかもしれないことに気づいた。必要に応じて、compressFileNameとともに(推奨どおり).tar.gz拡張子を使用できます。

362
amitchhajer

再帰的にコマンドラインで機能する圧縮方法はたくさんありますが、最終的なオーディエンスが誰であるかを知るのは良いことです。

つまり、Windowsを実行している人に送信するのであれば、おそらくZipが最善です。

Zip -r file.Zip folder_to_Zip

unzip filenname.Zip

他のLinuxユーザーのために、またはあなたの自己tarは素晴らしいです

tar -cvzf filename.tar.gz folder

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

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

たとえばtarを実行した場合など、tarおよび物事の展開方法や抽出方法には注意が必要です。

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
56
Vahid

@amitchhajerの投稿はGNU tarに対応しています。誰かがこの投稿を見つけ、それがNON GNUシステムで動作するために必要な場合、彼らはこれを行うことができます。

tar cvf - folderToCompress | gzip > compressFileName

アーカイブを拡張するには

zcat compressFileName | tar xvf -
16