web-dev-qa-db-ja.com

Unix tar:ディレクトリ構造を保持しない

絶対パスを使用してtarでファイルとディレクトリを圧縮しようとすると、結果の圧縮ファイルに絶対パスが保持されます。絶対パスを使用して、圧縮するフォルダーの場所をtarに伝える必要がありますが、パス全体ではなく、そのフォルダーのみを圧縮する必要があります。

たとえば、tar -cvzf test.tar.gz /home/path/test –フォルダtestを圧縮したい場所。ただし、実際に圧縮するのは/home/path/testです。これを回避するためにできることはありますか? -Cオペランドで遊んでみましたが無駄です。

19
user1082754

使用する -Cディレクトリを指定するファイルが希望どおりに表示される次にそのディレクトリから見たファイルを指定する

tar -cvzf test.tar.gz -C /home/path test
21
Mark Reed

これは醜いです...しかしそれは機能します...

これと同じ問題がありましたが、複数のフォルダーがあるため、すべてのファイルをフラット化したかっただけです。オプション「transform」を使用してsed式を渡すことができ、...期待どおりに機能します。

これは次の式です。

's/.*\///g'( '/'の前のすべてを削除します)

これが最後のコマンドです。

tar --transform 's/.*\///g' -zcvf tarballName.tgz */*/*.info
28

マルチディレクトリの例

tar cvzf my.tar.gz example.Zip -C dir1 files_under_dir1 -C dir2 files_under_dir2

dir1/2の下のファイルにはパスがあってはなりません。

1
gigi2