5GBアーカイブでこのコマンドを使用しています
tar -zxvf archive.tar.gz /folder/in/archive
これはこれを行う正しい方法ですか?コマンドライン出力がないため、それは永遠にかかっているようです...
tar
は、デフォルトで相対パスを格納します。 GNU tarは、絶対パスを保存しようとすると、そう言っています:
tar -cf foo.tar /home/foo
tar: Removing leading `/' from member names
特定のフォルダーを抽出する必要がある場合は、tarファイルの内容を確認してください。
tar -tvf foo.tar
正確なファイル名に注意してください。私の場合foo.tar
ファイル、抽出できます/home/foo/bar
と言って:
tar -xvf foo.tar home/foo/bar # Note: no leading slash
だから、いいえ、あなたが投稿した方法は、(必ずしも)それを行うための正しい方法ではありません。先頭のスラッシュは省略しなければなりません。絶対パスをシミュレートする場合は、cd /
まず、スーパーユーザーであることを確認します。また、これは同じことを行います:
tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option
tar
がパスを相対パスに変換するのには、非常に明白で正当な理由があります。 1つは、元のソース以外の場所にアーカイブを復元する機能です。もう1つはセキュリティです。アーカイブを抽出し、そのファイルが現在の作業ディレクトリに表示されることを期待して、代わりにシステムファイル(または独自の作業)を誤って上書きする可能性があります。
注:-P
オプション、tar
willアーカイブの絶対パス。そのため、抽出する前に大きなアーカイブの内容を確認することは常に価値があります。