使用“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 scrub”未发现任何文件系统错误。
以下是‘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 到快照而不是实时数据中:
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,您可以备份快照而不是实时数据,这有助于避免这个问题。