rsync para o servidor remoto que não possui a mesma configuração de usuários que o servidor local produz erro de permissão

2

Estou configurando um backup do meu servidor web baseado em Linux para um NAS que executa o FreeBSD. Eu criei um usuário de backup na caixa FreeBSD e executei o rsync como root na caixa local (servidor web) usando o seguinte comando:

rsync -avz /hsphere/ [email protected]:/mnt/tank/web_backup/web01.webhost.net

Ele funciona bem para todos os diretórios de propriedade do root, mas quando ele inicia o backup dos diretórios de usuários comuns, recebo erros de permissão negada.

rsync: recv_generator: mkdir "/mnt/tank/web_backup/web01.webhost.net/hsphere/local/home/username/username.com" failed: Permission denied (13)

Eu estava adivinhando isso porque o "-a" tenta preservar a propriedade dos arquivos originais e, como esses usuários não existem no servidor remoto, ele estava recusando. Eu tentei rodar o rsync sem os sinalizadores -o -g e -p pensando que isso ocorreria, mas recebo o mesmo erro.

rsync -rltDz /hsphere/ [email protected]:/mnt/tank/web_backup/web01.webhost.net

Se eu rsync usando root para o NAS remoto, ele terá sucesso, mas eu prefiro não ter que usar root no NAS se puder evitá-lo, pois isso cria uma falha de segurança. O "backup_user" na caixa freebsd está no grupo wheel, o que deve dar a ele permissões suficientes.

Algum conselho sobre como proceder?

    
por John P 23.05.2011 / 16:15

1 resposta

2

Você pode querer experimentar --fake-super . A partir da página de manual rsync :

--fake-super

When this option is enabled, rsync simulates super-user activities by saving/restoring the privileged attributes via special extended attributes that are attached to each file (as needed). This includes the file's owner and group (if it is not the default), the file's device info (device & special files are created as empty text files), and any permission bits that we won't allow to be set on the real file (e.g. the real file gets u-s,g-s,o-t for safety) or that would limit the owner's access (since the real super-user can always access/change a file, the files we create can always be accessed/changed by the creating user).

No seu caso, como você deseja usar --fake-super no lado remoto, precisará invocá-lo via --rsync-path , por exemplo:

rsync -avz --rsync-path='rsync --fake-super' /source/ backupuser@remote:/dest/

Ao restaurar a partir de seus backups, você também precisará garantir que --fake-super esteja sempre em vigor no sistema em que os backups estão armazenados.

    
por 23.05.2011 / 16:42