ファイルを解凍する

ファイルを解凍する
~/Downloads/t1$ tar tf test.t 
home/a/Downloads/t2/
home/a/Downloads/t2/z.txt 
home/a/Downloads/t2/y.txt
~/Downloads/t1$ tar xf test.t 
~/Downloads/t1$ ls ~/Downloads/t2
ls: cannot access ’/home/a/Downloads/t2’: No such file or directory 

なぜこれが起こるのですか?パス名を入力していないのですか?

ベストアンサー1

ls home/a/Downloads/t2/tarアーカイブを抽出したディレクトリで試してください。

tar tリストのパスを参照してください。いいえ前にスラッシュがあるため、アーカイブを抽出するときは、ファイルシステムのルートではなく現在の作業ディレクトリに基づいています。一般的に、アーカイブから可能な場所にファイルを抽出するのは非常に危険です。

もちろん、アーカイブを作成するときにパスの関連部分だけを保存するのではなく、tar cf foo.tar t2アーカイブを使用することがよくあります。tar cf foo.tar /home/a/t2

ただし、アーカイブにはすでに長いパスがあるため、a)ルートディレクトリに移動して解凍できます。

~$ cd /
/$ tar xf ~/Downloads/t1/test.t 

tarまたは、少なくともGNU tarのように不要な部分を削除するオプションを使用してください。

--strip-components=NUMBER
抽出するときは、ファイル名からNUMBER個の前のコンポーネントを削除してください。

だからtar xf test.t --strip-components=3それを行う必要があります。

おすすめ記事