rsync 복사 후 파일 데이터 손실

rsync 복사 후 파일 데이터 손실

. 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가짜 권한을 대상 파일 시스템에 복제하여 실제로 실제 권한 설정으로 사용되어 문제가 발생했습니다.

관련 정보