나는 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을 시도했지만 레인저가 작동하지 않음). 파일이 손상되어 지정된 기본 프로그램(예: 이미지의 경우 qimgv, 비디오의 경우 mpv)으로 열 수 없다는 메시지가 나타납니다.
이 문제로 인해 파일이나 디렉터리가 손상되어 실제 콘텐츠에 액세스할 수 없지만 여전히 있을 수 있는지, 아니면 메타데이터가 손상되었는지(대부분 JPG 및 PNG 파일) 확실하지 않습니다. 이러한 파일과 해당 콘텐츠에 대한 액세스를 어떻게 복원합니까?
답변1
출력은 권한 비트가 누락된 디렉터리를 나열하려고 할 x
때 얻는 것과 정확히 동일합니다 .
다음은 이 상황을 재현하는 방법에 대한 예입니다.
$ cd /tmp
$ mkdir dirperms
$ cd dirperms
$ touch foo bar baz
$ mkdir zot
$ cd ..
$ chmod a-x dirperms
$ cd dirperms
bash: cd: dirperms: Permission denied
$ ls -l dirperms
ls: cannot access 'dirperms/baz': Permission denied
ls: cannot access 'dirperms/bar': Permission denied
ls: cannot access 'dirperms/foo': Permission denied
ls: cannot access 'dirperms/zot': Permission denied
total 0
-????????? ? ? ? ? ? bar
-????????? ? ? ? ? ? baz
-????????? ? ? ? ? ? foo
d????????? ? ? ? ? ? zot/
따라서 을 사용하는 것은 testdisk
약간 과잉일 수 있습니다 . Screenshots
간단히 .chmod -R u+X Screenshots
권한 오류의 근본 원인은 원래 소스 파일 시스템이 Unix 스타일 권한을 지원하지 않는 파일 시스템일 수 있으므로 POSIX 호환성을 위해 파일 시스템 드라이버에서 보고한 권한이 드라이버의 실제 액세스 권한과 일치하지 않기 때문일 수 있습니다. 허용합니다 rsync
. 따라서 rsync
가짜 권한이 대상 파일 시스템에 복사되어 실제로 실제 권한 설정으로 사용되어 문제가 발생합니다.