A principal diferença entre essas ferramentas é como elas copiam arquivos.
scp
basicamente lê o arquivo de origem e o grava no destino. Ele executa uma cópia linear simples, localmente ou através de uma rede.
rsync
também copia arquivos localmente ou pela rede. Mas emprega um algoritmo de transferência delta especial e algumas otimizações para tornar a operação muito mais rápida. Considere a ligação.
rsync A host:B
rsync
irá verificar o tamanho dos arquivos e os carimbos de data / hora de modificação de A e B e pulará qualquer outro processamento, se eles corresponderem.
Se o arquivo de destino B já existir, o algoritmo de transferência delta garantirá que apenas as diferenças entre A e B sejam enviadas pela conexão.
rsync
irá gravar dados em um arquivo temporário T , e em seguida, substituir o arquivo de destino B com T para tornar o update "atômica" para processos que possam estar usando B .
Outra diferença entre eles diz respeito à invocação. rsync
possui uma infinidade de opções de linha de comando, permitindo que o usuário ajuste seu comportamento. Ele suporta regras de filtro complexas, é executado em modo batch, modo daemon, etc., scp
possui apenas algumas opções.
Em resumo, use scp
para as tarefas do dia a dia. Comandos que você digita de vez em quando em seu shell interativo. É mais simples de usar e, nesses casos, as rsync
otimizações não ajudam muito.
Para tarefas recorrentes, como cron
trabalhos, use rsync
. Como mencionado, em várias invocações, ele aproveitará os dados já transferidos, executando muito rapidamente e economizando recursos. É uma excelente ferramenta para manter dois diretórios sincronizados em uma rede.
Além disso, ao lidar com arquivos grandes, use rsync
com a -P
opção Se a transferência for interrompida, você poderá retomar onde parou, reemitindo o comando. Veja a resposta de Sid Kshatriya .