非常に大きなディレクトリを解凍しようとしています。全体を解凍するには、次の操作を実行します。
$ sudo tar -xjf itunes20140618.tbz --verbose
x itunes20140618/
x itunes20140618/genre_artist
x itunes20140618/imix_type
...etc...
ただし、1 つのファイルのみをアーカイブ解除しようとすると、正しく実行されますが、コマンドは無期限にハングします。さらに、--verbose ステートメントを使用すると、出力がまったく印刷されません。次に例を示します。
$ sudo tar -xjf itunes20140618.tbz itunes20140618/imix --verbose
[ nothing prints...it just hangs. But it does un-tar that single file ]
答え1
オプション以外の引数の後にオプションを指定しないでください。特に、tar
which は非標準のコマンドであり、オプション、アクション、およびそれらに対する引数を解析するための古い方法と新しい方法がいくつかサポートされている複数の実装があります。
で:
tar -xjf itunes20140618.tbz itunes20140618/imix --verbose
itunes20140618.tbz
はオプションの引数であり-f
、itunes20140618/imix
アーカイブから抽出するメンバーの名前として取られる追加の非オプション引数です。--verbose
が追加の引数 (抽出する別のメンバーの名前) として扱われるか、オプションとして扱われるかは、の実装とバージョンtar
、さらにはコンパイル方法や実行環境によって異なります。
あなたの場合、おそらくあなたはそれをグローバルな選択肢としてtar
捉えていない人(大多数)の一人である可能性があります。--verbose
ここでは、次を使用します。
tar -xjf itunes20140618.tbz --verbose itunes20140618/imix
あるいはもっとポータブルなもの:
bunzip2 < itunes20140618.tbz | tar xvf - itunes20140618/imix
または、tar
標準に置き換えます(ただし、移植性は低くなります)pax
。
bunzip2 < itunes20140618.tbz | pax -vr itunes20140618/imix
答え2
使用中のbzip2
ものはファイルアーカイバしたがって、tar
本質的には として機能し file archiver
、bzip2
それらを圧縮します。
たとえば、tar を使用してファイルのコレクションをアーカイブし、その結果得られたアーカイブ ファイルを gzip で圧縮すると、拡張子が .tar.gz のファイルが作成されます。
しかし、このアプローチには、Wiki の記事に記載されている欠点があります。
1 つのファイルを抽出または変更するのは困難です。 1 つのファイルを抽出するには、アーカイブ全体を解凍する必要があり、時間とスペースを消費する可能性があります。
したがって、単一のファイルを頻繁に抽出する場合は.tar
、 または.zip
のみを使用することをお勧めします。.rar