tarを作成するときは、ファイルをサブディレクトリに入れます。

tarを作成するときは、ファイルをサブディレクトリに入れます。

tarファイルを作成しようとしています。 tarredが必要なフォルダが2つあります。私の質問を明確にしましょう。

folder 1. /temp1
folder 2. /temp1

今私のtar出力は次のようになりたいと思います。解凍すると、次のような結果が得られます。

 /temp1/* (stuff of temp1)
 /temp1/temp2/* (temp2 and subdirectories inside temp1).

次に、temp2をtemp1にコピーして圧縮します。誰かが私がこれらのコンテンツをコピーする必要がない方法でこれを行うように提案できますか?途中でプロセスを終了するのと同じように、temp2の一部の内容をtemp1に残します。

ベストアンサー1

temp2をtemp1にSymlinkにリンクし、tarに-horオプションを使用して--dereferenceシンボリックリンクを逆参照(続行)するように指示します。

例えば

cd temp1
ln -s ../temp2/ .
cd ..
tar cvz -h -f example.tar.gz ./temp1
rm -f temp1/temp2

これにより、ディレクトリ(たとえば)の./temp2下にtarアーカイブが作成されます。./temp1./temp1/temp2

-hこのオプションがGNU拡張であるかどうか覚えていません。 GNUを使用していない場合は、tar使用する前に慎重にテストしてください。

temp1の修正タイムスタンプに興味がある場合は、以下を使用してくださいtouch -r

touch -r temp1 temp1-modtime
cd temp1
ln -s ../temp2/ .
cd ..
touch -r temp1-modtime temp1
tar cvz -h -f example.tar.gz ./temp1
rm -f temp1/temp2
touch -r temp1-modtime temp1
rm -f temp1-modtime

おすすめ記事