我使用rsync -aPv source/ dest
. 它没有输出错误消息,也没有返回失败状态,并且一直进行到最后。它将每个文件从 复制source
到dest
,或者我是这么认为的。
问题是只有源目录根目录中的文件被正确复制,并且可以打开和使用。其余文件和目录以某种方式损坏,并发生错误:
~/Pictures $ cd Screenshots/
cd: Permission denied: “Screenshots/”
~/Pictures $ ls -l Screenshots/
ls: cannot access 'Screenshots/2016-05-02-23:11:15.png': Permission denied
ls: cannot access 'Screenshots/2015-08-07-17-26-33.png': Permission denied
ls: cannot access 'Screenshots/screenshot_2019-05-27_20-41-55_665836194.png': Permission denied
ls: cannot access 'Screenshots/screenshot_2019-05-05_23-17-16_571047883.png': Permission denied
...
total 0
-????????? ? ? ? ? ? 2015-03-22-03-49-39.png
-????????? ? ? ? ? ? 2015-04-03-20-17-31.png
-????????? ? ? ? ? ? 2015-05-18-22-09-39.png
-????????? ? ? ? ? ? 2015-08-07-17-26-33.png
...
我可以使用某些文件管理器访问这些目录(我试过 PCManFM;ranger 没有工作),它显示文件已损坏,无法使用指定的默认程序打开(例如 qimgv 用于图像,mpv 用于视频)。
我不确定此问题是否仅损坏了文件或目录,以某种方式无法访问实际内容但可能仍然存在,或者元数据已损坏(它们主要是 JPG 和 PNG 文件)。如何恢复对这些文件及其内容的访问?
x
如果您尝试列出缺少权限位的目录,则输出与您得到的完全相同。这是有关如何重现这种情况的示例:
因此,使用
testdisk
可能是矫枉过正;您可以简单地Screenshots
使用chmod -R u+X Screenshots
.错误权限的根本原因可能是原始源文件系统可能是不支持 Unix 样式权限的文件系统,因此文件系统驱动程序报告的权限(为了 POSIX 兼容性)与实际情况不符驱动程序实际上允许
rsync
访问。因此rsync
将虚假权限复制到目标文件系统,在那里它们实际上被用作真正的权限设置,从而导致了问题。