file_i.yo
毎秒フォルダにいくつかのファイルを生成するPythonスクリプトがあるとします。folder
しばらくして、私は現在の状態を圧縮してfolder
どこかに送るべきだと決めました。だから私はbashを呼ぶ。
zip -r current_folder.zip folder
圧縮には約1分かかります。
この状況ではどうなりますか?私が最も興味を持っているのは、圧縮ファイルが破損する可能性があるかどうかです。
答え1
アーカイブ自体に問題はありませんが(つまり、有効なzipアーカイブです)、file_i.yo
内部ファイルが破損したり破損したりすることはありません。file_i.yo
アップデート方法によって異なります。比較するこの回答:
ファイルを変更したい場合は、2つのオプションがあり、各オプションには長所と短所があります。
- その場所にファイルを上書きできます。これは余分なスペースを使用せず、既存のファイルコンテンツ以外のハードリンク、権限、およびその他の属性を保持します。この方法の主な欠点は、ファイルが記録されている間に何かが起こると(アプリケーションがクラッシュしたり、停電が発生した場合)、ファイルが部分的に記録されることです。
- ファイルの新しいバージョンを別の名前の新しいファイルに書き込み、その場所に移動できます。これは、より多くのスペースを使用し、ハードリンクを壊し、ファイルへの書き込み権限があるがファイルに含まれているディレクトリがない場合、これを行うことはできません。一方、以前のバージョンのファイルは自動的に新しいバージョンに置き換えられ、すべての時点でファイル名はファイルの有効で完全なバージョンを指します。
zip
最初のケースでは、プロセスがファイルを読み込んでいる間にファイルが変更されることがあります。実際に読んだ内容は、次のような2進数のようになります。パノラマの失敗:結果のさまざまな部分は、現実のさまざまな「バージョン」から来ています。これが発生すると、結果のアーカイブには、破損した、空のファイル、または部分的なfile_i.yo
ファイルが含まれます(ファイルが内部で更新された方法と更新プロセスのどの段階で読み取られたかzip
によって異なります)。
2番目のケースでは、zip
ファイルが開き、いくつかの個々の「バージョン」が読み込まれます。新しいファイル(新しい「バージョン」)がディレクトリ内の古いファイルを置き換える場合でも、使用された記述子は古いファイルをzip
指し、ツールはそのファイルを最後まで読み込みます。結果のアーカイブには、いくつかの有効なfile_i.yo
ファイルが含まれます。