暗黙のファイルパスでUnix tarコマンドを使用するにはどうすればよいですか?


9

tar -xvfコマンドを使用していますが、明示的なパスを使用しています。ただし、パスはフルです。
例:

tar -xvf 13.2.tar

/mntフォルダのパスをとっています。/フォルダがいっぱいです。

暗黙のパスでファイルをtarするにはどうすればよいですか?


現在の質問の仕方では、最も洗練された水晶玉でさえもやや濁っていると思われるので、正確に何が起こっているのかを明確に説明する必要があります。

回答:


2

通常、アーカイブの作成中にルートパーツを保持するにはtar--absolute-namesまたは--absolute-pathsオプションが必要'/'です。そのように強制しても、抽出は先頭をスキップし'/'ます。


ただし、先頭にアーカイブがあり、'/'解凍中にtarがそれをスキップしない場合、NoahDの回答はこの形式で機能するはずです。

pax -r -s ',/mnt,/new/path,' -v -f 13.2.tar

paxは圧縮ファイルを処理しないと思いますので、解凍してからにパイプする必要がありますpax
それはこのようになります(あなたがgzipされたアーカイブを持っていると仮定します)

gunzip -c 13.2.tar.gz | pax -r -s ',/mnt,/new/path,' -v

たった今、GoogleでこのWikiページを見つけました。


2

正規(別名:明示的)と相対(おそらく暗黙的と呼んでいるもの)の違いは/、最初にaを使用するかどうかです。

たとえば、現在の作業ディレクトリがの/usr/home/bob場合、次のコマンドはまったく同じ効果があります

tar -xvf foo.tar *
tar -xvf ./foo.tar *
tar -xvf ./foo.tar ./*
tar -xvf /usr/home/bob/foo.tar *
tar -xvf /usr/home/bob/foo.tar ./*
tar -xvf /usr/home/bob/foo.tar / usr / home / bob / *

しかし、これは本当にあなたの質問ではないと思います。ディスク使用量を確認し、いっぱいでないディレクトリを見つける必要があるようです。これはdfコマンドで行うことができます。

df -k # space on disk in kilobytes
df -m # as above, but in meg
df -g # as above, but in gig

また、を使用mountして、どのファイルシステムがどのデバイスにマウントされているかを示すことができます。


0

相対パスでtarファイルを作成するには、

cd /parent/of/dir/to/tar
tar cvf subdir.tar subdir

現在の作業ディレクトリ以外の特定のディレクトリにtarを解凍するには、-C(大文字のC)スイッチを使用します。

絶対パス名を含むファイルをroot以外の場所にuntarしたい場合は、をいじる必要があるかもしれませんchroot(1)


0

私は信じているPAXは、トリックを行います

pax -r -s、/ mnt、/ gooddir、-f 13.2.tar

新しいルートディレクトリに置き換えることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.