root@server # tar fcz bkup.tar.gz /home/foo/
tar: Removing leading `/' from member names
/
この問題を解決してファイル名を保存するにはどうすればよいですか?
答え1
STDERRに印刷された「メンバー名から先行する'/'を削除」を削除したいのですが、まだtarの賢明なデフォルト値などの先行スラッシュを維持したい場合は、良い解決策を見ました。ここレビューアーtimsoftが提供しました。
回避策は、-Cオプションを使用してディレクトリをルート(/)に変更し、保持するファイルツリーを指定することです。いいえスラッシュは現在相対パスしか必要ないからです。これは通常のtar createコマンドと同じことを行いますが、削除は必要ありません。
tar fcz bkup.tar.gz -C / home/foo/
答え2
--absolute-names
この機能を無効にするには、またはオプションを使用します-P
。
tar fczP bkup.tar.gz /home/foo
tar fcz bkup.tar.gz --absolute-names /home/foo
答え3
これは実際には問題ではない機能です。絶対的な場所を持つアーカイブはセキュリティ上のリスクがあります。攻撃者はこれらのアーカイブを使用して、ユーザーをだまして、重要なシステムの場所にファイルをインストールさせる可能性があります。
はい、使用できます-P
。しかし、tarがスラッシュを削除することを許可し、単にアーカイブユーザーにルートディレクトリから明示的に抽出を実行するように要求するのが間違っているのはなぜですか?その後、間違いではなく意図的に重要なシステム位置に影響を与えます。
答え4
これが私が無差別代入方式を使って行ったことです2>&1 | grep -v "Removing leading"
。
たとえば、
tar -cf "$BKUPDIR/${BKUPFILE}.tar" --overwrite --exclude '.*' --one-file-system "$SRCDIR" 2>&1 | grep -v "Removing leading"