別のディレクトリからtar.gzファイルを作成します。 tarはファイルを特定のディレクトリ構造に保持する必要があります。

別のディレクトリからtar.gzファイルを作成します。 tarはファイルを特定のディレクトリ構造に保持する必要があります。

これが私のファイル構造です。私は現在test2/ディレクトリにあり、すべてのコマンドはここで実行する必要があります。

test/
  |_test2/
publish/
  |_subfolder1/
      |_f1
      |_f2
      |_f3
      |_subfolder2/
          |_f4
          |_f5
          |_f6
          |_f7

以下を行う必要があります。

  1. サブフォルダ2(同じ名前)のtar.gzを作成する
  2. サブフォルダ2を削除
  3. サブフォルダ2.tar.gzを含むサブフォルダ1(同じ名前)のtar.gzを作成します。
  4. サブフォルダ1を削除

最終的なtar構造は次のようになります

publish/
  |_subfolder1.tar.gz
      |_subfolder2.tar.gz

現在のパスで各 tar.gz を解凍すると、出力は次のようになります。

publish/
  |_subfolder1.tar.gz
  |_subfolder1/
      |_f1
      |_f2
      |_f3
      |_subfolder2.tar.gz
      |_subfolder2/
          |_f4
          |_f5
          |_f6
          |_f7

次のようにしてこれを達成できます。

cd ../../publish/subfolder1
tar -zxf subfolder2.tar.gz subfolder2/
rm -rf subfolder2
cd ../
tar -zxf subfolder1.tar.gz subfolder1/
rm -rf subfolder1
cd ../test/test2

私は私のスクリプトがcd

tar -zcf ../../publish/subfolder1/subfolder2.tar.gz -C ../../publish/subfolder1/subfolder2/ .
rm -rf ../../publish/subfolder1/subfolder2/
tar -zcf ../../publish/subfolder1.tar.gz -C ../../publish/subfolder1/ .
rm -rf ../../publish/subfolder1/

これによりtarballが作成されますが、ディレクトリは削除されます。開梱すると、以下が表示されます。

publish/
  |_subfolder1.tar.gz
  |_subfolder2.tar.gz
  |_f1
  |_f2
  |_f3 
  |_f4
  |_f5
  |_f6
  |_f7

複数のcdコマンドを使用せずにtarball構造内のフォルダパスをどのように保持できますか?

ベストアンサー1

保管するコンテンツ、現在のディレクトリfooに変更します。ディレクトリ自体をアーカイブするには、親ディレクトリをおよび:に変更します。footar-C /some/dir/foo .foofootar foo-C /some/dir foo

したがって、コマンドは次のようになります。

tar -zcf ../../publish/subfolder1/subfolder2.tar.gz -C ../../publish/subfolder1 subfolder2
rm -rf ../../publish/subfolder1/subfolder2/
tar -zcf ../../publish/subfolder1.tar.gz -C ../../publish subfolder1
rm -rf ../../publish/subfolder1/

おすすめ記事