Estou recebendo o erro mencionado no título.
Encontrei esta pergunta semelhante: Execute o rsync com permissão de root na máquina remota . Isso não responde à minha pergunta.
Sou o administrador do servidor remoto e quero usar rsync
para fazer backup de arquivos na minha caixa local. Aqui está o meu comando rsync:
$ rsync -avz [email protected]:/var/www/ /backups/Sites/MySite/
Funciona principalmente. O login é feito através de um par de chaves. Eu não uso e não consigo usar uma senha (EDIT: para efetuar login via SSH). Apenas alguns arquivos não serão transferidos devido a permissões. Não quero alterar essas permissões.
Aqui está o erro:
receiving file list ... done
rsync: send_files failed to open "/var/www/webapp/securestuff/install.php": Permission denied (13)
Eu não quero mudar as permissões nesse arquivo. Ele (e outros semelhantes) não deve ser legível (exceto pela raiz).
Isso deve ser executado em um trabalho cron e eu prefiro uma solução simples de uma linha usando apenas o comando rsync. A próxima opção seria um script de shell que eu possa chamar no trabalho cron. Em nenhum caso, posso efetuar login manualmente na máquina remota e me tornar root (porque vou dormir quando isso for executado).
Como posso usar o rsync para fazer backup na minha caixa local?
fonte
rsync: send_files failed to open "/cygdrive/...": Permission denied (13)
. Então, meu computador de origem era o cygwin do Windows. Situação ligeiramente diferente, mas para a posteridade, minha solução foi clicar com o botão direito do mouse em cmd.exe e Executar como administrador .Respostas:
Você não pode fazer backup de um arquivo que não pode ler de outra forma; portanto, as permissões deverão ser alteradas ou substituídas pela raiz .
Suas opções em mais detalhes:
Substitua as permissões rsync'ing como
[email protected]
diretamente. (... ou configurando o sudo no servidor para permitir a execução sem senha do
rsync
componente do lado do servidor.e
Crie uma conta dedicada de "backup do site" no servidor. Altere as permissões dos arquivos para torná-los legíveis na conta "backup do site"; você pode usar ACLs e
setfacl
para isso. Não use esta conta para mais nada.Escreva um script no servidor que despeje / var / www / em um tarball criptografado. Novamente, isso pode ser feito como root (via crontab) ou configurando o sudo para não exigir uma senha para esse script. Por exemplo:
O backup seria feito puxando o tarball inteiro toda vez, o que pode ser ineficiente em sites grandes:
O requisito de senha seria removido pela edição de sudoers :
fonte
No host remoto, você pode executar o daemon rsync com
no
/etc/rsyncd.conf
arquivoIsso permitirá que o daemon use o
CAP_DAC_OVERRIDE
recurso e leia o sistema de arquivos local sem alterar as permissões / propriedade.Se você precisar apenas fazer um backup, é uma boa prática configurar o rsync no modo somente leitura:
fonte
Se os arquivos são legíveis apenas por
root
você , você precisa terroot
acesso ao backup do arquivo, lendo-o no sistema de arquivos.rsync
está lendo os arquivos do sistema de arquivos e não do dispositivo bruto.Com a excepção de
dump
,dd
e backups semelhantes que copiam a partição vez que os programas de arquivos, backups ler os arquivos do sistema de arquivos. Os utilitários de backup falharão ao ler e fazer backup dos arquivos para os quais as permissões do ID do usuário usado para executá-los impedem o acesso. Este é o caso em que você está se deparando.Na maioria dos casos, você precisa confiar no seu software de backup o suficiente para permitir a leitura de todos os seus dados. Isso também significa que você precisa confiar na sua mídia de backup com todos os seus dados. Em alguns casos, você pode excluir alguns arquivos do backup e usar um método alternativo para fazer backup de seu conteúdo.
EDIT: Ao arquivar os dados (copiando todas as permissões), você precisará de acesso root nos dois servidores. Se você estiver fazendo isso como um backup, poderá procurar uma solução como o BackupPC, que usa o rsync para ler os arquivos, mas armazena os arquivos em sua própria árvore de diretórios.
fonte