基本上,我發現的是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 年開始。
開發商承諾修復它,但沒有。
他確實提供了一種解決方法,即添加 switch -mmt1
,將線程數設為一 (1)。顯然,掛起是由多執行緒衝突引起的,當其中一個執行緒找不到檔案時,只有一個執行緒可以避免掛起。