tar -xvfはディレクトリから既存のファイルを削除しますか?


10

tarアーカイブがあり、使用したいtar -xvf
このtarアーカイブには、いくつかのファイルを含むディレクトリツリーがあります。私のsolaris 10システムでは、このディレクトリツリーはすでに存在し、その中にいくつかのファイルがあります。
アーカイブを解凍すると、ディレクトリツリー全体が上書きされますか、それともアーカイブに含まれるファイルのみが上書きされますか?
彼のアーカイブに特派員がいないファイルは削除されますか?


いつでもテスト.tarとテストディレクトリを作成して試してみることができます...自分で考えた答えは、ここでだれかから与えられた答えよりもずっと長く続くでしょう。
ジャービン、

答えはノーです。十分に考えれば、アーカイブからファイルを抽出するプログラムが完全に無関係なファイルを削除することは意味をなさないことに気付くでしょう。
Fosco 2010

回答:


6

すでに存在する重複ファイルは、システムによって解凍されたり上書きされたりする場合があります。ただし、通常はデフォルトで行われます。アーカイブ内にあるがシステム上にないファイルは、単にシステム上の新規または既存のディレクトリに追加されます。

Dir /test

/1/a
c

アーカイブ test.tar

/1/b
d

おそらく次のようにマージされます:

/1/a
/1/b
c
d

-ktarコマンドにフラグを追加すると、ターゲットディレクトリのファイルが上書きされなくなります。

tar -xvkf test.tar

@BP:csh(Sunのデフォルトのシェルですか?)に「noclobber」シェル変数が設定されていると、偶発的な上書き動作を防ぐため、上書きはシェルに依存する可能性があります。
布袋10/10/18

BloodPhiliaとhoteiに感謝します。私はシステムでテストを行い、tar -xvfは既存のファイルを上書きし、存在しないファイルを追加します。私が知りたいのは、ディレクトリ全体が上書きされて、システム上のそのディレクトリにあるがアーカイブにはなかったファイルが失われる可能性があるかどうかです。例:dir.tar dir / file2にあります。私のシステムでは、dir / file1、dir / file2、およびdir / file3があります。tar -xvf dir.tarを実行すると、dir全体が上書きされ、file1とfile3が含まれなくなる可能性はありますか?
Felicia 2010

@hotei:noclobber(POSIXシェルbtwにも存在します)>fooは、シェルでにリダイレクトされたファイルにのみ影響します。タールには影響しません。
Gilles「SO-邪悪なことをやめなさい」2010

@hotei noclobberは、シェルでのリダイレクトによってファイルが上書きされるのを防ぎます。したがって、echo foo > bar.txtbar.txtが存在する場合は上書きしません。tarなどのプログラムが上書きする内容には影響しません。
KeithB 2010

1
@Felicia:Single Unixによれば、tarはアーカイブになかったファイルを消去しません。既存のファイルをアーカイブの内容(モードは除く)で上書きします。準拠していないtarが存在する可能性がありますが、それらのいずれものような無関係なファイルを上書きすることはないと思いますdir/file1
Gilles「SO-邪悪なことをやめよ」

0

最も簡単な方法は、新しい空のディレクトリを作成し、そこにcdして、そこにファイルを抽出することです。ただし、抽出されたファイルは相対(./で始まる)であり、絶対的(/で始まる)ではないことに注意する必要があります。目次をlessにパイプして、わからない場合(tar -tvf tar_filename | less)を確認します。

マニュアルページを見て、tarバージョンがデフォルトで上書きするかどうかを確認できます。Tarは抽出中にファイルを削除しません。これは、通常、抽出を行う前に新しい空のディレクトリから開始するもう1つの理由です。

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