Wie rsync den Besitz von Dateien bewahrt, hängt von zwei Dingen ab:
-
Sind Sie Superuser (root) auf dem Ziel?
Andernfalls können Sie keine Dateien und Verzeichnisse mit einem anderen Benutzer als Ihrem eigenen erstellen. -
Welche Optionsflags verwendest du?
Der -a
Option enthält die -o, --owner
, -g, --group
Optionen zur Wahrung des Eigentums.
Auf Dateisystemebene wird die Eigentümerschaft von Benutzern und Gruppen in UID bzw. GID-Nummern. Wenn es keine Zuordnung von UID/GID zu Benutzernamen und Gruppennamen gibt, zeigen Tools stattdessen einfach diese Nummern an.
Benutzer und Gruppen mit demselben Namen können auf verschiedenen Systemen unterschiedliche UID/GID-Nummern haben.
Standardmäßig versucht rsync, den Besitz nach Benutzername bzw. Gruppenname . Mit anderen Worten, wenn der Benutzer vmail
Eigentümer einer Datei an der Quelle ist, wird rsync den Benutzer zu vmail
machen auch der Eigentümer am Bestimmungsort (auch wenn diese unterschiedliche UID/GID-Nummern haben).
Das ist normalerweise ziemlich belastbar und für Menschen am vorhersehbarsten, da wir Eigentumsverhältnisse normalerweise nicht in Form von UID/GID-Nummern betrachten.
Wenn kein übereinstimmender Benutzer vmail
auf dem Remote-Ziel vorhanden ist, tritt ein Fallback-Szenario auf. Rsync behält dann die tatsächlichen zugrunde liegenden UID/GID-Nummern und die UID-Nummer des vmail
bei Benutzer auf der Quelle wird verwendet, um den Eigentümer festzulegen.
Das sollte den korrekten Besitz erhalten, wenn Sie die rsync-Richtung umkehren und die Sicherung wiederherstellen.
man rsync
:
-o, --owner
This option causes rsync to set the owner of the destination file to be the same as the source file,
but only if the receiving rsync is being run as the super-user (see also the --super and --fake-super
options). Without this option, the owner of new and/or transferred files are set to the invoking user
on the receiving side.
The preservation of ownership will associate matching names by default, but may fall back to using the
ID number in some circumstances (see also the --numeric-ids option for a full discussion).
--numeric-ids
With this option rsync will transfer numeric group and user IDs rather than using user and group names
and mapping them at both ends.
By default rsync will use the username and groupname to determine what ownership to give files. The
special uid 0 and the special group 0 are never mapped via user/group names even if the --numeric-ids
option is not specified.
If a user or group has no name on the source system or it has no match on the destination system, then
the numeric ID from the source system is used instead. See also the comments on the "use chroot" set‐
ting in the rsyncd.conf manpage for information on how the chroot setting affects rsync’s ability to
look up the names of the users and groups and what you can do about it.
Was rsync
Kopien ist die numerische Benutzer-ID der Datei, unabhängig davon, ob sie auf dem Zielsystem vorhanden ist. Wenn ein Benutzer mit dieser ID nicht existiert, ls
usw. zeigt nur diese Nummer anstelle eines Namens. Wenn diese Benutzer-ID zu einem anderen Benutzernamen auf dem Zielsystem gehört, wird dieser Benutzer nun Eigentümer der Datei.
Sicherung und Wiederherstellung funktionieren in diesem Szenario problemlos.
Speziell in Ihrem Fall tritt das eigentliche Problem auf, wenn es an der Zeit ist, die Dateien wiederherzustellen. Der Schlüssel wäre, den gewünschten Eigentümer/die gewünschte Gruppe anzugeben, wenn Sie die Dateien zurückziehen. --chown=vmail:vmail
Angenommen, Sie haben den Benutzer vmail bereits auf der neuen Maschine erstellt, auf der Sie wiederherstellen möchten, würden Sie etwa Folgendes eingeben:
sudo rsync -av --chown=vmail:vmail --force --delete --progress [email protected]_backup_server:/home/user/backups/vmail/ /vmail/
Wenn Sie es auf diese Weise tun, spielt es keine Rolle, wem die Dateien auf dem Backup-Server gehören, solange Sie mit/von diesem Benutzer rsyncen können (was in Ihrem Beispiel bereits als wahr gilt).