基本的に私が発見したのはp7zipまず、圧縮するディレクトリをスキャンし、それらのファイルを単一の zip 形式で圧縮します。
次のシナリオを考えてみましょう。数百 GB のファイルとフォルダーがあり、最初にスキャンされて圧縮されます。スキャンが完了した後にファイルを削除したとします。スキャンが完了するまでにファイルが失われる原因はわかりませんが、この動作は実稼働環境で確認されたため、ローカル マシンで自分で削除しました。その場合、次のエラーがスローされ、無期限に停止します。
7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,6 CPUs Intel(R) Core(TM) i5-9500T CPU @ 2.20GHz (906EA),ASM,AES-NI)
Scanning the drive:
29741 folders, 48865 files, 5035919485 bytes (4803 MiB)
Creating archive: /home/mymachine/Downloads.zip
Items to compress: 78606
WARNING: No such file or directory
/var/webarch/data/fs-root/538/2022/05/20/19964
では、p7zip または hack には、これらの警告を無視して圧縮を続行するために使用できるフラグはありますか? たとえば、本番環境でタイムアウト エラーをスローする代わりに、スキャン後に失われたファイルのいくつかを無視することができます。
答え1
これはバグレポートに記載されています #2099 zip アーカイブの作成中にファイルが削除されると 7z がハングする 2017年から。
開発者は修正すると約束しましたが、修正しませんでした。
彼は回避策を提案しました。それは、-mmt1
スレッド数を 1 に設定するスイッチを追加することです。どうやら、ハングアップは、ファイルがいずれかのスレッドで見つからない場合にマルチスレッドの競合によって発生するもので、スレッドを 1 つだけにすることで回避できます。