Il modo in cui rsync conserva la proprietà dei file dipende da due cose:
-
Sei un superutente (root) sulla destinazione?
Altrimenti non puoi creare file e directory con un utente diverso dal tuo. -
Quali flag di opzione stai usando?
Il -a
l'opzione include -o, --owner
, -g, --group
opzioni progettate per preservare la proprietà.
A livello di file system la proprietà dell'utente e del gruppo è memorizzata in UID risp. Numeri GID. Quando non c'è alcuna mappatura da UID/GID a nomi utente e nomi di gruppo, gli strumenti visualizzeranno semplicemente quei numeri.
Utenti e gruppi con lo stesso nome possono avere numeri UID/GID diversi su sistemi diversi.
Per impostazione predefinita, rsync proverà a far corrispondere la proprietà per nome utente risp. nome gruppo . In altre parole quando l'utente vmail
è il proprietario di un file all'origine, rsync renderà l'utente vmail
anche il proprietario del luogo di destinazione (anche quando hanno numeri UID/GID diversi).
Di solito è abbastanza resiliente e il più prevedibile per gli esseri umani poiché normalmente non esaminiamo la proprietà sotto forma di numeri UID/GID.
Quando nessun utente corrispondente vmail
è presente sulla destinazione remota, si verificherà uno scenario di fallback. Rsync conserverà quindi i numeri UID/GID sottostanti effettivi e il numero UID del vmail
user sulla sorgente verrà utilizzato per impostare il proprietario.
Ciò dovrebbe preservare la proprietà corretta quando inverti la direzione di rsync e ripristini il backup.
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.
Cosa rsync
copie è l'ID utente numerico del file, indipendentemente dal fatto che esista sul sistema di destinazione. Se un utente con quell'id non esiste, ls
ecc. mostrerà solo quel numero invece di un nome. Se quell'ID utente appartiene a un altro nome utente sul sistema di destinazione, questo utente sarà ora proprietario del file.
Il backup e il ripristino funzioneranno senza problemi in questo scenario.
Con il tuo caso in particolare, il vero problema sorge quando arriva il momento di ripristinare i file. La chiave sarebbe specificare il proprietario/gruppo desiderato quando si estraggono i file. --chown=vmail:vmail
Supponendo che tu abbia già creato l'utente vmail sulla nuova macchina su cui eseguirai il ripristino, emetterai qualcosa di simile al seguente:
sudo rsync -av --chown=vmail:vmail --force --delete --progress [email protected]_backup_server:/home/user/backups/vmail/ /vmail/
In questo modo significa che non importa chi possiede i file sul server di backup fintanto che puoi sincronizzare rsync a/da quell'utente (il che è implicito come già vero nel tuo esempio).