Dateidaten nach Rsync-Kopie verloren

Dateidaten nach Rsync-Kopie verloren

Ich habe ein Backup eines Verzeichnisses mit einigen darin enthaltenen Verzeichnissen erstellt, indem ich verwendet habe rsync -aPv source/ dest. Es wurden weder Fehlermeldungen ausgegeben noch ein Fehlerstatus zurückgegeben und der Vorgang wurde bis zum Ende fortgesetzt. Es wurden alle Dateien von sourcein kopiert dest, oder das dachte ich zumindest.

Das Problem besteht darin, dass nur die Dateien aus dem Stammverzeichnis des Quellverzeichnisses ordnungsgemäß kopiert wurden und geöffnet und verwendet werden können. Die restlichen Dateien und Verzeichnisse sind irgendwie beschädigt und es treten Fehler auf:

~/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
...

Ich kann mit bestimmten Dateimanagern auf diese Verzeichnisse zugreifen (ich habe PCManFM ausprobiert, Ranger hat nicht funktioniert) und es zeigt sich, dass die Dateien beschädigt sind und nicht mit den angegebenen Standardprogrammen geöffnet werden können (z. B. qimgv für Bilder, mpv für Videos).

Ich bin mir nicht sicher, ob dieses Problem nur die Dateien oder Verzeichnisse beschädigt hat, sodass der eigentliche Inhalt nicht zugänglich ist, aber vielleicht ist er noch da, oder vielleicht sind die Metadaten beschädigt (meistens handelt es sich um JPG- und PNG-Dateien). Wie kann ich den Zugriff auf diese Dateien und ihren Inhalt wiederherstellen?

Antwort1

Die Ausgabe ist genau die gleiche, die Sie erhalten, wenn Sie versuchen, ein Verzeichnis aufzulisten, dessen xBerechtigungsbits fehlen.

Hier ist ein Beispiel, wie die Situation reproduziert werden kann:

$ 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/

Daher testdiskwar die Verwendung wahrscheinlich übertrieben; Sie hätten die Berechtigungen des ScreenshotsVerzeichnisses einfach mit einem beheben können chmod -R u+X Screenshots.

Die Hauptursache für fehlerhafte Berechtigungen könnte sein, dass das ursprüngliche Quelldateisystem möglicherweise ein Dateisystem war, das keine Unix-Berechtigungen unterstützte, und daher stimmten die vom Dateisystemtreiber gemeldeten Berechtigungen (aus Gründen der POSIX-Kompatibilität) nicht mit dem überein, was der Treiber tatsächlich für rsyncden Zugriff erlaubte. Daher rsyncwurden die falschen Berechtigungen auf das Zieldateisystem repliziert, wo sie tatsächlich als echte Berechtigungseinstellungen verwendet wurden, was das Problem verursachte.

verwandte Informationen