Wie kann Rsync verhindern, dass übertragene Dateien angezeigt werden?

72

Ich habe eine SSHFS-Verbindung mit einem Remote-Dateisystem auf einem Linux-Server eingerichtet. Ich führe einen Rsync von meinem lokalen Server zum ftpfs-Dateisystem durch. Aufgrund der Art dieses Setups kann ich chownim sshfs-Dateisystem nichts ausführen.

Wenn ich den Rsync-Vorgang durchführe, wird versucht, alle Dateien zu erkennen, nachdem sie übertragen wurden. Dies führt zu Chown-Fehlern, obwohl die Dateien einwandfrei übertragen werden.

Gibt es bei Rsync eine Möglichkeit, dem Programm mitzuteilen, dass es die Dateien nicht anzeigen soll? Wenn ich 1000 Dateien synchronisiere, bekomme ich ein Protokoll mit 1000 chown: permission denied (error 13)Fehlern. Ich weiß, es schadet nichts, diese Fehler zu bekommen, da der Besitz der Dateien von der sshfs-Konfiguration selbst bestimmt wird. Aber es wäre schön, sie nicht zu bekommen.

Jake Wilson
quelle

Antworten:

107

Sie führen wahrscheinlich rsync folgendermaßen aus:

rsync -a dir/ remote:/dir/

Die -aOption laut Dokumentation entspricht:-rlptgoD

      -a, --archive    archive mode; equals -rlptgoD (no -H,-A,-X)

Sie möchten wahrscheinlich die Optionen -ound entfernen -g:

      -o, --owner                 preserve owner (super-user only)
      -g, --group                 preserve group

Also sollte Ihr rsync-Befehl ungefähr so ​​aussehen:

rsync -rlptD dir/ remote:/dir/

Oder wie @glglgl darauf hinweist:

rsync -a --no-o --no-g dir/ remote:/dir/

Die verbleibenden Optionen sind:

      -r, --recursive             recurse into directories
      -l, --links                 copy symlinks as symlinks
      -p, --perms                 preserve permissions
      -t, --times                 preserve modification times
      -D                          same as --devices --specials
          --devices               preserve device files (super-user only)
          --specials              preserve special files
aculich
quelle
19
... oder einfach-a --no-o --no-g
glglgl
1
Ich habe gerade verwendet rsync -r --no-o --no-g /source/* /dest/und mein Besitzer und eine Gruppe der Dateien am Ziel wurden immer noch entsprechend der Quelle geändert. Irgendwelche Ideen?
Ram Patra
12

Bestehen Sie -okeine der anderen Optionen, die dies implizieren.

Ignacio Vazquez-Abrams
quelle
5

Verwenden Sie die -aOption nicht, da sie die -pOption enthält, die die Berechtigungen beibehält. Für diese Situation -rsollte das ausreichen.

Weitere Infos finden Sie unter man rsync.

Sven
quelle
4
Sind Sie sicher, -pwas ich vermeiden möchte? Das Eigentum unterscheidet sich von den Berechtigungen, richtig?
Jake Wilson
0

Ich bin auf etwas Ähnliches gestoßen, bei dem rsyncder Eigentümer und die Gruppe von Dateien und Verzeichnissen nicht von einem Remote-Server synchronisiert wurden. Zu korrigieren, kopierte ich über die /etc/shadow, /etc/groupund /etc/passwdDateien.

Als ich den folgenden rsyncBefehl ausführte, funktionierte er dahingehend, dass Berechtigungen, symbolische Links und Eigentumsrechte erhalten blieben.

Ich hatte SSH-Schlüssel eingerichtet, um passwortloses SSH zu verwenden.

rsync -avpog [email protected]:/usr/local /usr
pbroderi31
quelle