O rsync não preserva a propriedade do diretório, mesmo com -a

11

Eu uso essa chamada rsync para fazer backup do meu diretório pessoal:

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

A página man do rsync diz que -a implica -g e -o (entre outros switches), o que deve preservar a propriedade. No entanto, notei que, se um diretório não existir em $BACKUP_MNTPOINT/$USER_HOME , ele será criado com root: root ownership, em vez da correta. (Isso só acontece com diretórios em $BACKUP_MNTPOINT/$USER_HOME ). Por que isso?

$BACKUP_MNTPOINT é uma unidade montada localmente. $BACKUP_MNTPOINT/$USER_HOME tem a propriedade e as permissões corretas. Nem $USER_HOME nem $BACKUP_MNTPOINT terminam com uma barra.

Os sistemas de arquivos de origem e de destino são XFS e executar mkdir $BACKUP_MNTPOINT/$USER_HOME cria um diretório com a propriedade esperada.

    
por kralyk 01.11.2014 / 14:19

2 respostas

15

Eu tive um problema semelhante ao usar rsync para fazer backup do sistema no meu servidor. Eu usei:

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/

A solução é que não há realmente um problema. Eu suspeito que você tenha abortado o processo rsync uma vez que você viu que ele cria pastas com permissões erradas definidas. O ponto crucial é que rsync apenas define as permissões de uma pasta pai quando é feita a sincronização de todas as subpastas e arquivos dela.

    
por 25.03.2015 / 12:41
0

Talvez execute o rsync via strace / truss e veja se você recebe um erro de volta do chown () syscall, e também para confirmar que chown () tem o caminho correto e o UID / GID.

    
por 19.11.2014 / 02:17