あるディレクトリを別のディレクトリにパッケージ化するには?

あるディレクトリを別のディレクトリにパッケージ化するには?

フォルダ(tar1)を圧縮し、圧縮されたフォルダを別のディレクトリ(tar2と仮定)に送信する方法。

ここで質問を確認しましたが、ほとんどの場合、ディレクトリではなくファイルを使用します。すべての組み合わせを試してみましたが、正しく動作しません。

私〜には次のものがあります。

tar1/
  a.txt
  b.txt
tar2/

Tar1/にはa.txt、b.txtというテストファイルがあります。そのフォルダを圧縮してtar2/に入れたいです。

その後は次のようになります。

tar1/
 a.txt
 b.txt
tar2/
 tar1.gz
     a.txt
     b.txt

頑張っています

tar czvf tar2/ tar1/

(参考書では、この構文の例を示します。最初のパスはそれを保存したい場所、2番目のパスはアーカイブを作成したい場所です。

また、-Cをターゲットにしてみました。

tar cvzf tar1/ -C tar2/

tar1/このディレクトリを圧縮してtar2に入れたい

このエラーが発生します。

tar:空のアーカイブの作成を卑劣に拒否します。

tar --help' or詳細については、tar --usage'を試してください。

RHEL 6.7を使用しています。

答え1

明細にアーカイブを指定していません。次のようにする必要があります。

tar -cvf tar2/tar1.tar tar1/

これにより、tarballがtar1.tarそのディレクトリに配置されますtar2/

今後:

tree tar*
tar1
├── a.txt
└── b.txt
tar2
├── a.txt
└── b.txt

0 directories, 4 files

後ろに:

tar -cvf tar2/tar1.tar tar1/
tar1/
tar1/a.txt
tar1/b.txt

tree tar*
tar1
├── a.txt
└── b.txt
tar2
├── a.txt
├── b.txt
└── tar1.tar

0 directories, 5 files

環境:

Distributor ID: Debian
Description:    Debian GNU/Linux 8.6 (jessie)
Release:    8.6
Codename:   jessie

答え2

あなたは何ですか実際にしようとしていますはい他の回答のコメントに埋もれています。tar明らかに前提条件でも圧縮もありません。

これを行う方法は次のとおりですpax

次の場所に圧縮アーカイブtar1/*(プレフィックスなしtar1/)を作成するにはtar2/tar1.tar.gz

( cd tar1/ && pax -z -w * > ../tar2/tar1.tar.gz )

階層全体をtar1/以下から直接コピーしてください。tar2/ 中間ファイルなしそしてすべてを保存:

( cd tar1/ && pax -pe -r -w * ../tar2/ )

*もちろん、シェルには拡張時にドットファイルは含まれません。問題が発生した場合は、一般的な方法で処理してください。

関連情報