スクリプトを実行してtarファイルを作成しています。スクリプトはフォルダーAにあります。ファイルをtarに追加します。入力ファイルとtarファイルは両方ともフォルダーBにあります。既存のtarにファイルを追加するときは、別のフォルダーにあるように絶対ファイルパスを指定します。tarに追加するときは、必要な名前に変更する必要があります。
例:
/root/test/A
/root/myFolder/B/foo
/root/myFolder/B/archive.tar
/root/myFolder/B/foo
をarchive.tar
に追加すると、bar
に名前が変更されます。
私はこのコマンドを試していますが、成功しません:
tar --transform='flags=r;s|/root/myFolder/B/foo|bar|' -cf archive.tar /root/myFolder/B/foo
同じ名前/root/myFolder/B/foo
のファイルを追加しています。
原因は、tar
が先頭の/
を自動的に削除することです。
tar:メンバー名から先頭の `/ 'を削除します
正規表現の実行前に削除されるようです。したがって、パターンの先頭の/
も削除する必要があります。
tar --transform='flags=r;s|root/myFolder/B/foo|bar|' -cf archive.tar /root/myFolder/B/foo
または-P
スイッチを使用します
-P, --absolute-names
don't strip leading '/'s from file names
別の方法として、-C
を使用してファイルフォルダーに切り替えることができます。その場合、パスを置き換える必要はありません。
tar --transform='flags=r;s|foo|bar|' -cf archive.tar -C /root/myFolder/B/ foo