GNU/Linux >> Linux Esercitazione >  >> Linux

Preservare i permessi di file e cartelle con rsync

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).


Linux
  1. Linux chmod and chown - Come modificare le autorizzazioni e la proprietà dei file in Linux

  2. Linux:comprensione delle autorizzazioni e dei tipi di file Unix?

  3. Permessi e salvataggio dei file?

  4. Creare un file come utente e gruppo diversi?

  5. Come modificare i permessi di file e directory con File Manager

Come escludere file e directory con Rsync

Precedenza dell'utente e del proprietario del gruppo nelle autorizzazioni dei file?

Permessi e proprietà dei file Linux spiegati con esempi

Gestisci le autorizzazioni di directory e file con chmod Recursive

Mantenimento delle autorizzazioni sui file con Git

Monta con sshfs e scrivi i permessi dei file