Ich erhalte einen verwirrenden Fehler von rsync und die ersten Dinge, die ich bei der Websuche finde (sowie alle üblichen Änderungen), lösen ihn nicht:
rsync: failed to set times on "/foo/bar": Operation not permitted (1)
rsync error: some files could not be transferred (code 23)
at /SourceCache/rsync/rsync-35.2/rsync/main.c(992) [sender=2.6.9]
Es scheint trotz dieses Fehlers zu funktionieren, aber es wäre schön, das loszuwerden.
rsync
file-transfer
träumt
quelle
quelle
Antworten:
Wenn
/foo/bar
es sich um NFS (oder möglicherweise ein FUSE-Dateisystem) handelt, ist dies möglicherweise das Problem.In beiden Fällen wird durch Hinzufügen von
-O
/--omit-dir-times
zu Ihrer Befehlszeile vermieden, dass versucht wird, Änderungszeiten für Verzeichnisse festzulegen.quelle
-O
hilft natürlich nicht. Dies war früher nicht der Fall, als meine Sicherungspartition ext3 statt ext4 war.--no-t
, um die implizite Option zu entfernen.Das Problem ist wahrscheinlich darauf zurückzuführen, dass / foo / bar nicht zum Schreibprozess auf einem Remote Darwin (OS X) -System gehört. Eine Lösung für das Problem besteht darin, einen geeigneten Eigentümer am Remote-Standort festzulegen.
Da diese Antwort abgestimmt wurde und daher hoffentlich für jemanden nützlich war, erweitere ich sie, um sie klarer zu machen.
Der Grund dafür ist, dass rsync wahrscheinlich versucht, beim Kopieren von Dateien eine beliebige Änderungszeit (mtime) festzulegen.
Um dies zu tun,
utime()
erfordert Darwins Systemfunktion, dass die effektive UID des Schreibprozesses entweder mit der Datei-UID oder der Super-User- UID identisch ist (siehe Seite opengroup utime) . Überprüfen Sie diese Diskussion auf der rsync-Mailingliste als Referenz.quelle
/remote/path/to/foo/bar
mit diesem Befehl auf den Remote-Server zu schreiben :rsync -avzP --exclude '.DS_Store' /local/path/to/foo/bar/ [email protected]:/remote/path/to/foo/bar
und habe die gleichen Fehlermeldungen erhalten, dieuser1
/remoe/path/to/foo/bar
$ chown -R user1 /remote/path/to/foo/bar
Wie @ racl101 auf einer Antwort kommentiert hat, kann dieses Problem mit den in Beziehung gesetzt wird Besitzer des Ordners . Der Befehl rsync sollte von demselben Benutzer ausgeführt werden wie der Befehl des Ordnerbesitzers. Wenn es nicht dasselbe ist, können Sie es ändern.
quelle
Das Problem in meinem Fall war, dass der "Empfänger-Mountpoint" falsch montiert war. Es war schreibgeschützt (aus irgendeinem Grund). Es sah so aus, als würde rsync die Dateien kopieren, aber das war es nicht. Ich habe meine fstab-Datei überprüft und die Mount-Optionen auf Standard geändert, das Dateisystem erneut gemountet und rsync erneut ausgeführt. Dann alles in Ordnung.
quelle
Ich hatte das gleiche Problem. Für mich besteht die Lösung darin, die entfernte Datei zu löschen und
rsync
erneut erstellen zu lassen.quelle
Ich habe dieses Problem gesehen, wenn ich in ein Dateisystem schreibe, das die Zeiten nicht (richtig) handhabt - ich denke, SMB-Freigaben oder FAT oder so.
Was ist Ihr Zieldateisystem?
quelle
sudo port install rsync
) verwenden, da diese weniger kaputt geht. Um dies zu überprüfenrsync --version
:: rsync Version 3.0.5 Protokoll Version 30 ... Anhängen, ACLs, Xattrs, Iconv, Symtimes, Dateiflaggen ... (ACLs und Xattrs sind die wichtigsten)Es kann sein, dass Sie für einige Dateien keine Berechtigungen haben. Versuchen Sie in einem Administratorkonto "sudo rsync -av". Alternativ können Sie das Root-Konto aktivieren und sich als root anmelden. Das sollte es Ihnen ermöglichen, Ihr System vollständig abzuspritzen und Ihren Rsync brutal zu erzwingen! ;-) Ich bin mir nicht sicher, ob die oben genannten --extended-Attribute helfen werden, aber ich habe sie auch reingeworfen, nur aus gutem Grund.
quelle
Dies geschah mir auf einer Partition vom Typ
xfs (rw,relatime,seclabel,attr2,inode64,noquota)
, in der die Verzeichnisse einem anderen Benutzer in einer Gruppe gehörten, in der wir beide Mitglieder waren. Die Gruppenmitgliedschaft wurde bereits vor der Anmeldung festgelegt, und die gesamte Verzeichnisstruktur war für Gruppen beschreibbar. Ich hatte manuell ausgeführtsudo chown -R otheruser.group directory
und diessudo chmod -R g+rw directory
zu bestätigen.Ich habe immer noch keine Ahnung, warum es ursprünglich nicht funktioniert hat, aber ich habe das Eigentum übernommen, indem ich es
sudo chown -R myuser.group directory
behoben habe. Vielleicht im Zusammenhang mit SELinux?quelle
utime()
, damit es funktioniert. Sie können auch als root ausgeführt werden und dies tun. Wenn die UID der Datei jedoch unterschiedlich ist, können Sie die Uhrzeit nicht auf "jetzt" ändern.utime()
.Dieser Fehler wird möglicherweise auch angezeigt, wenn Sie den rsync-Prozess für Dateien ausführen, die in der Quelle oder im Ziel nicht kürzlich geändert wurden, da die Zeit für die kürzlich geänderten Dateien nicht festgelegt werden kann.
quelle