Rsync sobre sftp ou chroot sftp
Editar: Para deixar claro, o LFTP cliente suporta vários protocolos, incluindo FTP, HTTP, FISH, SFTP, HTTPS, FTPS e BitTorrent. Neste exemplo, estamos usando SFTP . O nome do cliente causou confusões às pessoas que leram este post.
Você pode usar lftp
e seu subsistema espelho para replicar o comportamento do rsync sobre o SFTP. Isso funciona em ambientes chroot também.
lftp -u username, \
-e "set net:timeout 4;set net:max-retries 6;mirror -R --parallel=8 --no-perms --newer-than=now-2days --only-newer /source/ /source/;bye" sftp://hostname.domain
Neste exemplo, deixei de fora a senha, porque temos uma confiança de chave SSH no host de destino.
Nota: O -R
não significa recursivo. O sinalizador -R
significa empurrar para remoto.
--parallel=
é o número de segmentos para interromper o trabalho. Isso pode ser limitado ou impactado, é claro, pelos limites MaxStartups em /etc/ssh/sshd_config
e nofile pam e outros limites no servidor de destino.
net:max-retries 6
Eu gosto de tentar novamente, apenas no caso de haver uma manutenção de rede.
net:timeout 4
desista e tente novamente após 4 segundos.
--no-perms
se você não quiser alterar permanentes no terminal remoto.
--newer-than
é apenas um exemplo de algo para usar conforme necessário.
--loop
pode ser usado para repetir a sincronização até que não sejam detectadas alterações.
bye
não queremos esquecer de sair em vez de confiar no tempo limite inativo.
Existem muitas outras opções disponíveis no LFTP.
Eu tive ótimas experiências com o LFTP usando seu subsistema de espelhamento e SFTP. É substancialmente mais rápido, pois pode dividir os trabalhos em vários fluxos. Pode até dividir um único arquivo em vários fluxos.
Uma grande vantagem de segurança de usar o LFTP é permitir transferências de arquivos em ambientes onde você não deseja que os scripts de automação tenham acesso a um shell no terminal remoto.
Eu criei uma demonstração de trabalho com a qual você pode testar. A retenção de arquivos é baixa, mas você pode usar isso para ver como é fácil automatizar os diretórios / arquivos usando lftp mais sftp chroot . Simplesmente instale o lftp e crie alguns diretórios ou arquivos temp, então:
mkdir -p ~/sftp_test/'date '+%Y%m%d%H%M''/{1,2,3}/{a,b,c}
lftp -u anon10,ymous -e "set net:timeout 4;set net:max-retries 4;mirror -R --parallel=4 --no-perms ~/sftp_test/ /private/;bye" sftp://sftp.ohftp.org