Tar

壓縮文件時強制 tar 忽略/跳過錯誤?

  • May 6, 2020

假設我這樣做tar cfzp home.tar.gz /home(需要一段時間)並且在壓縮期間文件更改並且 tar 失敗,我得到“文件在我們讀取時更改”並且 tar 停止。我假設 home.tar.gz 現在不完整,或者這只是“通知”而不是真正的錯誤?

是否有某種“強制”選項可以使 tar 完成其工作並且不會因錯誤而中止?

編輯/更新:我發現“–ignore-failed-read 在不可讀的文件上不會以非零退出”,至少我認為它正在工作。但需要注意參數的順序,因為您最終會得到一個名為“–ignore-failed-read”的 tar 文件

我需要忽略其他任何事情嗎?

更新:如果沒有“–ignore-failed-read”,如果文件已被刪除,tar 將繼續執行“文件在我們讀取之前已刪除”。但是,我認為它可能會因“文件在我們閱讀時更改”錯誤而中止,但我真的不知道。很難將存檔與“原始”進行比較,因為我有來來去去的記憶體文件等。

更新:經過仔細觀察,“文件在我們閱讀時已更改”更像是一個通知,如果在 tar 執行其業務時文件發生更改,tar 將繼續執行。但我會留下答案,也許更有經驗的人可以添加更多見解。

您的假設是正確的,“我們閱讀時文件已更改”是一個通知,通常與 tar 創建存檔時正在使用的文件(即在創建過程中寫入)有關。如果一致性很重要,你最好在其他地方同步內容,即

rsync -avz /my/home/ /somebackupdir/my/home/  # initial sync, followed by 
rsync -avz /my/home/ /somebackupdir/my/home/  # any subsequent sync, repeated
                                             # as often as you feel necessary

這為您提供了一個備份位置的好處,該位置只需要在創建 tarball 之前更新差異。

引用自:https://serverfault.com/questions/560741