Sempre me perguntei por que rsync
tenta transferir um arquivo para um local remoto, onde ele tem permissões de leitura / execução para o diretório de destino, mas nenhuma permissão de gravação para criar o arquivo de destino real. Isso pode ser simulado mesmo localmente ao tentar copiar um arquivo como usuário comum para / , rsync
transferirá o arquivo inteiro (também demorando muito para arquivos grandes) e finalmente falha com
rsync: mkstemp "/.myTargetFile" failed: Permission denied (13)
Portanto, ele já parece falhar na inicialização ao tentar criar o arquivo temporário (o arquivo de pontos ) durante a transferência. Por que ele não percebe isso e aborta cedo, em vez de tentar copiar o arquivo inteiro sem ter permissões de gravação?
E para onde ele copia o arquivo, se não puder criar o arquivo temporário? Não consigo ver nenhum aumento de memória dos processos rsync e também nenhum arquivo correspondente em / tmp . Parece que ele descarta diretamente os dados no destino, mas continua com a transferência.
fonte
--inplace
ele transfere o arquivo inteiro até perceber a falta de permissões de gravação.--inplace
é muito útil quando você tem direitos para gravar em um arquivo, mas não no diretório que o contém.Isso parece ser uma falha do atual protocolo rsync, conforme explicado no rastreador de erros . O protocolo rsync não pode determinar antecipadamente se possui permissões de gravação no destino. Em vez disso, envia e verifica o sucesso ou o fracasso posteriormente.
fonte
O Rsync cria um arquivo temporário na mesma pasta do arquivo de destino, portanto, nesse caso, você deve copiar alguns arquivos
/
, pois não o iniciou como raiz e normalmente/
era gravável apenas pela raiz, por isso falha.Para descobrir quais arquivos estão sendo copiados, passe o parâmetro
-v
fonte
rsync
cria seus arquivos temporários na mesma pasta que o diretório de destino. Mas, mesmo que não consiga criar esses arquivos temporários, o peitoril inicia a transferência e falha depois, em vez de verificar logo no início se todas as permissões de gravação são necessárias. Eu quero saber por que se comporta assim.