rsync "Betrieb nicht erlaubt"

9

Ich versuche so einen einfachen rsync auf eine USB-Festplatte, der Befehl ist

rsync -az --modify-window=2 /home /mnt/exthd/tmp/

Ich führe dies als root aus.

Aber ich bekomme viele Fehler, die alle mit unzureichenden Berechtigungen zusammenhängen:

rsync: chown "/mnt/exthd/tmp/home/someuser" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/someuser/.bash_logout" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/someuser/.bash_profile" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/someuser/.bashrc" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/guest" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/guest/.bash_logout" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/guest/.bash_profile" failed: Operation not permitted (1)
rsync: chown "/mnt/exthd/tmp/home/guest/.bashrc" failed: Operation not permitted (1)
rsync: symlink "/mnt/exthd/tmp/home/guest/fred2" -> "fred" failed: Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1042) [sender=3.0.7]

Dies ist Version 3.0.7. Ich habe versucht, die Option --super ohne Wirkung zu verwenden. Irgendwelche Ideen?

Tim der Zauberer
quelle
Was ist das Dateisystem auf dem USB-Laufwerk?
Caleb
Ist die externe Festplatte als FAT (32) formatiert? Das würde nicht funktionieren, da FAT die Attribute für den Dateieigentum nicht kennt.
Sven
@Caleb Ich würde vermuten, dass es FAT ist, aber wie kann ich sagen?
Tim der Verzauberer
Laufen mount | grep /mnt/exthdsollte es dir sagen.
Caleb
@Caleb sagt vfat
Tim the Enchanter

Antworten:

14

Das FAT-Dateisystem (das Linux-Mount vfat nennt) kann einige der Berechtigungs- und Eigentumsdaten, die über Ihre Dateien auf der Linux-Seite gespeichert sind, nicht speichern.

Ihre Optionen scheinen zu sein:

  • Formatieren Sie die Festplatte mit ext3 / 4 oder einem anderen Dateisystem, das diese Attribute unterstützt. Ich denke, sogar NTFS würde den Job machen, wenn Sie mit Windows teilen.
  • Speichern Sie diese zusätzlichen Eigenschaften mit der --fake-superOption, damit rsync xattrs in die Datei schreibt, anstatt die Dateisystemattribute zu verwenden
  • Ignorieren Sie den Fehler, diese Eigenschaften gehen einfach verloren.
  • Wickeln Sie Ihren Datensatz in eine TAR-Datei und legen Sie die TAR-Datei auf dem FAT-System ab. Alle Attribute bleiben erhalten und sind vorhanden, wenn Sie sie jemals extrahieren.
Caleb
quelle
--fake-super funktioniert auch nicht, obwohl sich der Fehler von Operation nicht erlaubt (1) zu Operation nicht unterstützt (95) ändert
Tim the Enchanter
Hm. Sie können verwenden, --no-ownerum nicht zu versuchen, den Eigentümer so einzustellen, dass er übereinstimmt. (FAT hat kein Eigentum des Eigentümers) und auch möglich --no-perms.
Caleb
danke für deine hilfe, wirklich gut, funktioniert immer noch nicht, obwohl sich der fehler wieder geändert hat, jede fehlerzeile hat jetzt rsync: failed to write xattr user.rsync.%statam anfang.
Tim the Enchanter
3

Rsync versucht eine Operation (chown und symlink), die das Dateisystem nicht zulässt oder nicht ausführen kann. Ich vermute, Ihre externe Festplatte hat ein FAT-Dateisystem.

Wenn Sie eine ordnungsgemäße Sicherung erstellen möchten, möchten Sie möglicherweise tar verwenden.

Sgaduuw
quelle
1
Oder ein anständiges Dateisystem.
womble
FAT ähnelt eher einem Datei-Repository, nicht einem Dateisystem. :-)
Janne Pikkarainen
Persönlich - ich hasse rsync. Beim Kopieren von Dateien und Verzeichnissen von meinem MAC auf eine Netzwerkfreigabe auf meinem Router, der das NFS-Dateisystem verwendet, sind zu viele Fehler unterschiedlicher Art aufgetreten. Ich musste dieses Laufwerk auch mehrmals neu formatieren, da rsync Dateien erstellt hat, die gesperrt waren und nicht gelöscht werden konnten. Der Grund, warum ich immer wieder versucht habe, rsync vs cp zu verwenden, war, dass es Ausschlussfilter unterstützt und schneller sein soll. Am Ende habe ich ein paar sehr einfache Java-Klassen geschrieben - Copy.java und CopyJob.java, ein Runnable zur Unterstützung von Multithreading und zusätzlicher Unterstützung für Filter ... :)
jrobertsz66