Parece que isso é o que está acontecendo:
- o rsnapshot está copiando o uid numérico e o gid do seu mac para o seu servidor
- os uids da conta do Mac e da conta do servidor são diferentes
- as permissões nos arquivos copiados não permitem que o seu servidor o acesse
Existem algumas soluções possíveis para isso.
Solução 1: use --usermap
e --groupmap
de rsync
O rsnapshot usa o rsync para fazer a maior parte do trabalho, e as versões recentes do rsync têm a opção de mapear os uids e gids. Não sei se o rsnapshot pode ser configurado para passar essas opções para o rsync, mas se puder, isso resolveria o seu problema.
Solução 2: Sincronize seus IDs de usuário e grupo.
Se a sua estação de trabalho e servidor executam o mesmo sistema operacional, isso provavelmente é possível, mas pode não valer a pena mudar se eles já estiverem configurados de forma diferente. Se eles estão executando sistemas operacionais diferentes, eles provavelmente têm esquemas de alocação de uid incompatíveis, embora seja possível sincronizar apenas os uids para o usuário. (A menos que um deles seja o Windows, então não é possível.) A alteração dos uids da conta não alterará os IDs dos proprietários em nenhum arquivo, portanto, você terá que fazer isso como uma etapa separada. Alterar o fluxo de um usuário não deve ser um grande problema, mas mudar o fluxo de um serviço pode ser uma bagunça.
Solução 3: separe a etapa de cópia
Se você copiar tudo para o servidor como uma etapa separada antes de executar o rsnapshot, poderá fazer a cópia com um programa que usará nomes de string em vez de números. Isso traduzirá uids para qualquer nome de usuário correspondente. Unison , a única ferramenta de sincronização de arquivos bidirecional que eu conheço, fará isso; está incluído (mas não instalado por padrão) na maioria das distribuições de linux, e disponível para macos via MacPorts ou como um Pacote de aplicativos . Se você copiar arquivos usando scp (incluído e instalado por padrão em quase tudo exceto no Windows), o proprietário será o usuário logado no sistema receptor.
Solução 3: adicione um passo de tradução uid / gid
Você pode alterar o uid / gid após o término do rsnapshot. Se você se importa apenas com um ou dois uids, é possível adaptar a solução de esta resposta :
find /your/rsynced/path -user 1000 -exec chown 505 {} \;
find /your/rsynced/path -user 1001 -exec chown 700 {} \;
Isso consertará seu uid / gid, mas interromperá o rsnapshots de arquivos inalterados - o rsnapshot não irá restringir arquivos que diferem de alguma forma, incluindo mudanças nos metadados. Ele não irá vincular arquivos com diferentes proprietários, ou até mesmo arquivos com diferentes timestamps. (Esse é um comportamento de rsync que o rsnapshot usa, mas não modifica.)
Claro, você pode adicionar outro passo para refazer o hardlink.