Estou transferindo alguns arquivos grandes (1.5Gb) para um servidor FTP do Windows em um cronjob. Está passando por uma linha ADSL de 2Mbit, com 512Kbit upstream. Assim, leva uma eternidade e pode ser propenso a cair para a linha.
Eu uso um loop em torno do rsync para fazer isso
while ! rsync -q -P --append source ftp_dest; do
sleep 60#give the line a chance to reset (which happens automatically)
done
Isso funciona para transferir o arquivo, mesmo com quedas (eu verifico o md5sums depois, apenas no caso). O problema vem no final do processo em que o rsync tenta definir as permissões do arquivo de destino, o que falha, porque o sistema de arquivos subjacente é NTFS.
EDITAR:
Eu adicionei "--no-p -no-o-no-g -no-X -no-A" conforme sugestão abaixo, mas ainda recebo o seguinte erro
rsync: ftruncate failed on "/mnt/ftpremote/test.bin": Operation not permitted (1)
Isso não é um problema, exceto que faz com que meu loop continue para sempre. Existe uma maneira de dizer ao rsync para não tentar nenhuma configuração de permissão? Eu olhei através da página man e não encontrei nada (mesmo se você disser para não definir permissões, as permissões padrão do conjunto). Eu pensei em usar códigos de erro, mas o código de erro para a configuração de permissões com falha é 23 (de acordo com a página man "Transferência parcial devido a erro"), que parece ser o código usado se a linha cair de qualquer maneira. p>