Linux 上無法刪除文件

Linux 上無法刪除文件

使用「rsync --archive --update」將我的主目錄從 ext4 備份到 btrfs 後,rsync 報告如下錯誤:

rsync: readdir("/mnt/backup/home/me/.mozilla/firefox/qbdcaxwe.default/sessions/????????? ??????"): Not a directory (20)                
rsync: rename "/mnt/backup/home/me/.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN" ->                           
+"home/me/.mutt/cache/bodies/imaps:[email protected]/INBOX/3-13228": Not a directory (20) 

當我嘗試使用“rm”刪除這些項目時,出現一條錯誤訊息,指出該項目是一個目錄。但「rm -d」失敗並顯示訊息「無法刪除...:沒有這樣的檔案或目錄。」。 “btrfs check”和“btrfs scrap”尚未發現任何檔案系統錯誤。

以下是「file」、「rm」和「rmdir」指令的輸出:

$ file /.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN
/.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN: SMTP mail, Non-ISO extended-ASCII text, with very long lines
$ rm /.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN
rm: remove regular file ‘/.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN’? y
rm: cannot remove ‘/.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN’: Not a directory
$ rmdir /.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN
rmdir: failed to remove ‘/.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN’: Not a directory

如何刪除此類檔案系統項目?

答案1

如果使用者在執行應用程式時執行備份使用者的主目錄可能會出現問題,因為應用程式可以保持檔案開啟和/或新增/刪除檔案和目錄並幹擾備份過程。

更好的方法(如果可能的話)是在使用者登出時以 root 身分建立備份。

或者,嘗試最大程度地減少備份時運行的應用程式數量(退出 GUI 並從命令列終端執行 rsync cmd)。

最後 - 某些應用程式在其檔案/目錄名稱中使用特殊字符,這可能會混淆各種實用程式。對於這些,您需要追蹤發生的情況(最好將輸出重定向到檔案)並使用替代解決方案(轉義字元、使用標籤根據需要自動完成檔案/目錄名稱甚至其他複製實用程式的金鑰。

答案2

如果您正在使用 btrfs 為什麼不利用它的功能呢?

拍攝快照:

sudo btrfs sub snap /home/me /home/me/.$(date +%Y-%m-%d_%H%M%S)_snapshot

將舊備份同步到快照而不是即時資料:

rsync --archive --update /mnt/backup/home/me/ /home/me/$(sudo btrfs subvolume list -c /home/me|tail -n1|awk '{print $NF}')/

(我主要使用 rsync -mauvPAX from/ to/ # 但你可能不需要所有這些。)

現在您有了 btrfs,您可以備份快照而不是即時數據,這應該有助於避免此問題。

相關內容