Problema de permissões do Rsnapshot ao executar o backup remoto do Macbook

2

Estou usando o rsnapshot no meu servidor doméstico para fazer backups do meu macbook sobre SSH. Tudo está configurado e funcionando corretamente, mas tenho um problema com as permissões.

Como tenho usuários diferentes no meu macbook e no servidor da minha conta, os arquivos de backup no meu servidor doméstico estão sendo salvos da seguinte forma:

-rw-------  16  501 dialout  1650 Jun 24 21:09 .bash_history
...

Eu imagino que 501 é o id associado ao usuário no meu macbook pro e como esse usuário não existe no meu servidor doméstico, estou simplesmente vendo o ID do usuário. Não tenho certeza sobre o grupo de discagem.

Essas permissões significam que, quando vou procurar meus arquivos de backup pelo compartilhamento de rede, obtenho problemas de permissão.

É possível salvar os arquivos de backup no usuário e no grupo de servidores de minha casa, em vez de persistir no meu grupo e usuário de macbooks? Em caso afirmativo, há alguma repercussão nisso?

    
por Timmy O'Mahony 26.10.2014 / 21:34

1 resposta

2

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.

    
por 16.11.2014 / 02:53