O rsync não tem limite para a profundidade dos subdiretórios que ele irá percorrer. Mais especificamente, excede o limite do sistema de arquivos do Linux. Acabei de copiar algo com cerca de 500 níveis de profundidade e o rsync copiou tudo bem.
Se você estiver enfrentando esse problema, verifique o seguinte:
- o sistema de arquivos de destino é incapaz de lidar com muitos subdiretórios?
- o destino está cheio?
- o arquivo --exclude-from especifica algo que restringe arquivos?
- é o comprimento total do caminho ("d / d / d / d" é de 4 níveis, mas 7 caracteres) além do que o sistema de arquivos permite?
- desativar a recursão incremental faz com que funcione?
--no-inc-recursive
(este é um algoritmo mais recente e você pode ter descoberto um bug) - a cópia funciona usando alguma outra técnica?
- o problema desaparece com (ou sem) compactação? %código%
Aqui está outra técnica para tentar. Se funcionar, mas -z
não, então você pode ter encontrado um bug em rsync
:
Isso irá rsync
dos arquivos em um lado, enviará o arquivo tar para stdout, ssh para o outro lado e irá descompactar os arquivos lá.
SOURCEDIR=/path/to/source
DESTHOST=machinename
DESTDIR=/path/to/destination
cd "$SOURCEDIR" && tar -c -v -f - . | ssh "$DESTHOST" "cd $DESTDIR && tar -x -p -f -"
Aviso: Se $ DESTDIR tiver espaços ou caracteres especiais, os itens acima precisarão ser citados com mais cuidado.