2

この質問は、tar アーカイブを作成するときにファイルを上書きする可能性があることを示しており、その状況を回避する方法を確認しようとしています。

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

--confirmation と --interactive を見ましたが、既存のファイルを上書きするかどうかではなく、ファイル x をアーカイブに追加するかどうかのみを尋ねられます。例えば、

tar --interactive -czvf innocent_text_file.txt foo*

各ファイルについてお尋ねしますが、innocent_text_file.txt を上書きしても問題ありません。

cp の -i のように機能するスイッチはありますか?

アーカイブの抽出ではなく、アーカイブの作成について質問していることに注意してください。

明確化私が心配しているのは、誤ってこのようなことをしていることです

tar -czvf * #Don't do this!

グロブにリストされている最初のファイルを上書きします。それを避けるために、言及された最初のファイルがすでに存在する場合、tarに文句を言ってもらいたいです。

cp -i * #Don't do this!

既存のファイルを上書きするかどうかを確認します。

4

4 に答える 4

1

私があなたの質問を正しく理解していれば、これはうまくいくはずです:

tar -cv * | gzip > myfile.tgz

于 2010-03-30T04:12:45.587 に答える
1

あなたの質問を正しく理解していれば、これでうまくいくはずです

-k, --keep-old-files は既存のファイルを保持します。アーカイブから上書きしないでください

于 2009-07-14T01:13:49.767 に答える
0

"c" (作成) の代わりに "u" (更新) はどうですか? 例: tar -uzvf

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

于 2009-07-14T01:15:28.920 に答える
0

これらは、tar から抽出する際の上書き制御です。

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 -i操作tar cは参考程度に。
これは、tar 内の既存のコピーを新しいバージョンで上書きしないアーカイブの更新に関心があることを意味します。tar では直接制御できないのではないかと思います。
また、そのようなスキームの必要性についても疑問に思います。

ただし、これについては、次のような方法があります。
アーカイブへの上書きを心配しているので、
ディレクトリの既存の部分的な 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 で圧縮されている場合は、このシーケンスの前に適切に圧縮してください。
そして、最後に再圧縮します。

于 2009-07-14T01:26:12.183 に答える