2009-07-14 26 views
1

This questionは、tarアーカイブの作成時にファイルを上書きする可能性があり、そのような状況を回避する方法を検討しようとしています。tarアーカイブの作成時にファイルが壊れるのを防ぐ方法

通常、私はファイルローラーを使用しますが、インストールされているバージョンが(1.1Gbのメモリを使用して)少し再生していますが、私はシステム管理者ではありません。

私は--confirmationと--interactiveを見ましたが、ファイルxをアーカイブに追加するかどうかを尋ねます。既存のファイルを上書きするかどうかはわかりません。例えば、

tar --interactive -czvf innocent_text_file.txt foo* 

は、CPのため-iのように作用する任意のスイッチがあり、各ファイルについて私に尋ねたが、

innocent_text_file.txt上書き完全に満足しているだろうか?

私はアーカイブの作成について質問しており、アーカイブを抽出することはありません。

明確化私が心配することは偶然グロブにリストされた最初のファイルを上書きしてしまい、この

tar -czvf * #Don't do this! 

のようなものをやっています。それを避けるために、私は最初のファイルは、それが既存のファイルを上書きする原因となるかどうかを確認します

cp -i * #Don't do this! 

のように、存在してすでに述べた場合にはタールが文句を言うにしたいです。

答えて

1

私はあなたの質問に正しく理解している場合、これは

-k、--keep-古いファイルが 既存のファイルを保つトリックを行う必要があります。アーカイブから上書きしないでください

+0

動作していないようです。 innocent_text_file.txtは、archive * creation *のための誤ったtarコマンドが与えられたときに上書きされます。 –

+0

--keep-old-filesオプションは、 – steveayre

0

"c"(作成)ではなく "u"(更新)はどうでしょうか?例:tar -uzvf

アーカイブ内のファイルよりも新しいファイルの場合は、追加(上書き)する必要があります。

+0

のみを抽出するためのものです。これは役に立ちません。 –

0

これらは上書きコントロールです。タールからを抽出してください。

Overwrite control: 

-k, --keep-old-files don't replace existing files when extracting 
    --keep-newer-files don't replace existing files that are newer than 
         their archive copies 
    --no-overwrite-dir preserve metadata of existing directories 
    --overwrite   overwrite existing files when extracting 
    --overwrite-dir  overwrite metadata of existing directories when 
         extracting (default) 
    --recursive-unlink empty hierarchies prior to extracting directory 
    --remove-files  remove files after adding them to the archive 

しかし、あなたは参照用cp -itar cの操作を参照してください。
を更新することに興味があります。 は、新しいバージョンでtarの既存のコピーを上書きしません。私はコントロールが直接タールで利用可能ではないと思う。
私はまた、そのようなスキームの必要性に疑問を抱いています。

ただし、これについては、次のようになります。
アーカイブに上書きすることを心配しているので、
私たちは安全にディレクトリの部分的なタール(例えば、files.tar)があるとみなします。

cd base/dir/to/be/tarred 
tar tf path/to/files.tar | sort > archived-files.lst 
find . -type f | sort > files.lst 
diff archived-files.lst files.lst | grep "^>" | cut -c 3- > new.lst 
tar uf -T new.lst 

このupdateは、圧縮されていないアーカイブでのみ機能することに注意してください。
アーカイブが圧縮されている場合は、このシーケンスの前に適切にgunzip/bunzip2を圧縮してください。
を入力し、最後に再圧縮します。

+0

私は、アーカイブの作成ではなく、抽出について質問しています。 –

+0

はい、私は考えましたが、珍しい要求のように聞こえます。ライブディレクトリでファイルが変更/更新されていても、アーカイブのファイルの最初のコピーを保持したいのですか? – nik

+0

元の質問の最後に説明を追加しました。それは今より意味があるのですか? –

1

私が正しくあなたの質問を理解していれば、私は、これはトリックするためにすべきであると信じて:

タール-cv * | gzip> myfile.tgz

関連する問題