web-dev-qa-db-ja.com

ファイルをtarファイルに追加するときにファイル名を変更する方法

スクリプトを実行してtarファイルを作成しています。スクリプトはフォルダーAにあります。ファイルをtarに追加します。入力ファイルとtarファイルは両方ともフォルダーBにあります。既存のtarにファイルを追加するときは、別のフォルダーにあるように絶対ファイルパスを指定します。tarに追加するときは、必要な名前に変更する必要があります。

例:

  • スクリプトの場所:/root/test/A
  • Tarに追加するファイルの場所:/root/myFolder/B/foo
  • Tarファイルの場所:/root/myFolder/B/archive.tar

/root/myFolder/B/fooarchive.tarに追加すると、barに名前が変更されます。

私はこのコマンドを試していますが、成功しません:

tar --transform='flags=r;s|/root/myFolder/B/foo|bar|' -cf archive.tar /root/myFolder/B/foo

同じ名前/root/myFolder/B/fooのファイルを追加しています。

2
nilesh_101

原因は、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
3
pLumo