絶対パスを使用してtar
でファイルとディレクトリを圧縮しようとすると、結果の圧縮ファイルに絶対パスが保持されます。絶対パスを使用して、圧縮するフォルダーの場所をtar
に伝える必要がありますが、パス全体ではなく、そのフォルダーのみを圧縮する必要があります。
たとえば、tar -cvzf test.tar.gz /home/path/test
–フォルダtest
を圧縮したい場所。ただし、実際に圧縮するのは/home/path/test
です。これを回避するためにできることはありますか? -Cオペランドで遊んでみましたが無駄です。
使用する -C
ディレクトリを指定するファイルが希望どおりに表示される次にそのディレクトリから見たファイルを指定する:
tar -cvzf test.tar.gz -C /home/path test
これは醜いです...しかしそれは機能します...
これと同じ問題がありましたが、複数のフォルダーがあるため、すべてのファイルをフラット化したかっただけです。オプション「transform」を使用してsed式を渡すことができ、...期待どおりに機能します。
これは次の式です。
's/.*\///g'
( '/'の前のすべてを削除します)
これが最後のコマンドです。
tar --transform 's/.*\///g' -zcvf tarballName.tgz */*/*.info
マルチディレクトリの例
tar cvzf my.tar.gz example.Zip -C dir1 files_under_dir1 -C dir2 files_under_dir2
dir1/2の下のファイルにはパスがあってはなりません。