rsync non mantiene la proprietà della directory anche con -a


12

Uso questa invocazione rsync per eseguire il backup della mia home directory:

rsync -aARrx --info= --force --delete --info=progress2 -F "$USER_HOME" "$BACKUP_MNTPOINT"

La pagina man rsync dice che -a implica -g e -o (tra le altre opzioni), che dovrebbe preservare la proprietà. Tuttavia ho notato che se una directory non esiste sotto $BACKUP_MNTPOINT/$USER_HOME, viene creata con root: proprietà root invece di quella corretta. (Questo succede solo con le directory proprio sotto $BACKUP_MNTPOINT/$USER_HOME). Perché?

$BACKUP_MNTPOINTè un'unità montata localmente. $BACKUP_MNTPOINT/$USER_HOMEha la proprietà e le autorizzazioni giuste. Né $USER_HOME$BACKUP_MNTPOINTterminare con una barra.

Sia il filesystem di origine che quello di destinazione sono XFS e in esecuzione mkdir $BACKUP_MNTPOINT/$USER_HOMEcrea una directory con la proprietà prevista.


1
Cos'è il filesystem $BACKUP_MNTPOINTe con quali opzioni è montato? Questo succede solo per la $BACKUP_MNTPOINT/$USER_HOMEdirectory parent ( ) o per tutte le directory create? Fare $BACKUP_MNTPOINTe $USER_HOMEfinire con un /?
terdon

Uso XFS sia per /homel'unità di backup. Finora penso che sia successo solo per le directory principali. Né $BACKUP_MNTPOINT$USER_HOMEterminare con una barra. EDIT: Posso confermare ora che succede solo alle directory qui sotto$BACKUP_MNTPOINT/$USER_HOME
kralyk

Quindi $BACKUP_MNTPOINT/$USER_HOMEha i permessi giusti ma non ci sono sottodirectory? Si prega di modificare la tua domanda e aggiungere questi dettagli. Inoltre, chiarisci se mkdir $BACKUP_MNTPOINT/$USER_HOME/foocrea una directory di proprietà del tuo utente se lo fai manualmente.
terdon

Sì, mkdir $BACKUP_MNTPOINT/$USER_HOME/foocrea una directory con la proprietà dell'utente.
kralyk,

Sarebbe davvero bello vedere informazioni rilevanti da strace(come specificato in una pseudo risposta).
Pavel Šimerda,

Risposte:


18

Ho avuto un problema simile durante l'utilizzo rsyncper il backup del mio sistema sul mio server. Ero solito:

rsync -aAXSHPr \
-e ssh \
--rsync-path="sudo /usr/bin/rsync/" \
--numeric-ids \
--delete \
--progress \
--exclude-from="/path/to/file/that/lists/excluded/folders.txt" \
--include-from="/path/to/file/that/lists/included/folders.txt" \
/ USER@SERVER:/path/to/folder/where/backup/should/go/

La soluzione è che non c'è davvero un problema. Ho il sospetto che hai interrotto il rsyncprocesso una volta che hai visto che crea cartelle con set di autorizzazioni errate. Il punto cruciale è che rsyncimposta i permessi di una cartella principale solo dopo aver sincronizzato tutte le sottocartelle e i relativi file.


1
Wow, non mi è venuto in mente niente, ben notato, grazie.
kralyk,

0

Forse esegui rsync tramite strace / truss e vedi se ricevi un errore dal chysc () syscall, e anche per confermare che chown () ha il percorso e UID / GID corretti.


Un buon commento ma non una risposta.
Pavel Šimerda,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.