Linux サーバーで tar を使用してファイルを Zip する

Linux サーバーで tar を使用してファイルを Zip する

いくつかのファイルから zip ファイルを作成しようとしていますが、zip を解凍すると 1 つのファイルしか取得されません。

tar cfvz test.zip file1.mp3 file2.mp3 file3.jpg

そして、test.zip を解凍すると、「test」ファイルだけが取得されます。zip のサイズは問題ありませんが、解凍時に同じファイル (「file1.mp3 file2.mp3 file3.jpg」) を取得するように動作させる方法がわかりません。

答え1

これは私にとってはうまくいきました:

$ tar -czvf test.tar.gz ./file1 ./file2 ...

$ tar -tzf test.tar.gz
./file1
./file2

# to extract do:
$ tar -xzf test.tar.gz

オプションを渡した後、f作成するアーカイブのファイル名を指定する必要があります。

ああ、ファイルを解凍する場合zip、ディレクトリは取得されませんが、代わりに tarball が取得されます。tarball にはすべてのファイルが含まれています。以下を使用します。

tar -xf test

そして、すべてのファイルが表示されるはずです。

もしご希望であれば普通zip ファイルの場合は、/ tandemzipの代わりにコマンドを使用します。また、正しいファイル サフィックスを追加するのも良い方法です。targz

  • gzip 付きの tar (例tar czvf ...): filename.tar.gz
  • bzip2 を使用した tar (例tar cjvf ...): filename.tar.bz2
  • 圧縮なしの tar (例tar cvf ...): filename.tar

答え2

まず、圧縮ファイルに という名前を付けたとしても.zip、それは ZIP ファイルではなく TAR および GZIP ファイルなので、使用する正しいファイル拡張子は.tar.gzまたは になります.tgz

さて、圧縮ファイルを解凍するのに使用したコマンドは何でしょうか? ZIP ユーティリティを使用した場合、拡張子によって混乱し、ファイルを解凍せずに圧縮解除しただけかもしれません。その結果、実際には TAR ファイルである単一のファイルが作成される理由がこれで説明できます。untar ユーティリティ (または コマンドtar -xf test) を使用すると、その中のすべてのファイルが復元されるはずです。

答え3

ファイルを抽出するには

tar xvfz test.zip 

デフォルトでは、すべてのファイルは現在の場所からの相対パスから取り出されるので、test.zipにmyfile.txt dir1/myfile.txtが含まれている場合は、両方のファイルがzipから取り出されます。

関連情報