Um artigo sobre a configuração dos blogs Ghost diz para usar scp
para copiar da minha máquina local para um servidor remoto:
scp -r ghost-0.3 root@*your-server-ip*:~/
No entanto, o Railscast 339: Chef Solo Basics usa scp
para copiar na direção oposta (do servidor remoto para a máquina local):
scp -r [email protected]:/var/chef .
No mesmo Railscast, quando o autor deseja copiar arquivos para o servidor remoto (mesma direção do primeiro exemplo), ele usa rsync
:
rsync -r . [email protected]:/var/chef
Por que usar o rsync
comando se scp
irá copiar nas duas direções? Como é que scp
difere rsync
?
Respostas:
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
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, asrsync
otimizações não ajudam muito.Para tarefas recorrentes, como
cron
trabalhos, usersync
. 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 .fonte
scp
é mais provável que esteja disponível em um sistema semelhante ao Unix, para evitar um irritante "comando não encontrado" de vez em quando.scp
ersync
:rsync -a
versusscp -rp
para preservar os tempos e permissões de modificação.O rysnc pode ser útil para rodar em conexões lentas e não confiáveis. Portanto, se o seu download for interrompido no meio de um arquivo grande, o rysnc poderá continuar de onde parou quando chamado novamente.
Usar
rsync -vP username@host:/path/to/file .
A opção -P preserva arquivos baixados parcialmente e também mostra o progresso.
Como sempre
man rsync
fonte
Diferença b / w scp e rsync no parâmetro diferente
1. Desempenho acima da latência
scp
: scp é relativamente menos otimizado e velocidadersync
: rsync é comparativamente mais otimizado e aceleradohttps://www.disk91.com/2014/technology/networks/compare-performance-of-different-file-transfer-protocol-over-latency/
2. Manuseio de interrupção
scp
: A ferramenta de linha de comando scp não pode retomar downloads abortados de conexões de rede perdidasrsync
: Se a própria sessão do rsync acima for interrompida, você poderá continuar quantas vezes quiser, digitando o mesmo comando. O rsync reiniciará automaticamente a transferência de onde parou.http://ask.xmodulo.com/resume-large-scp-file-transfer-linux.html
3. Exemplo de comando
scp
rsync
A
-P
opção é a mesma que--partial --progress
, permitindo que o rsync funcione com arquivos parcialmente baixados. A--rsh=ssh
opção diz ao rsync para usar ssh como um shell remoto.4. Segurança:
scp é mais seguro. Você precisa usar
rsync --rsh=ssh
para torná-lo tão seguro quanto o scp.documento do homem para saber mais:
fonte
The scp protocol is outdated, inflexible and not readily fixed. We recommend the use of more modern protocols like sftp and rsync for file transfer instead.
Uma das principais características do
rsync
overscp
(além do algoritmo delta e criptografia, se usado com ssh) é que ele verifica automaticamente se o arquivo transferido foi transferido corretamente. O Scp não fará isso, o que ocasionalmente pode resultar em corrupção ao transferir arquivos maiores. Então, em geral, o rsync é uma cópia com garantia .As páginas de manual do Centos mencionam isso no final da
--checksum
descrição da opção:fonte
Há uma distinção para mim que
scp
sempre é criptografada com ssh (shell seguro), enquantorsync
não é necessariamente criptografada. Mais especificamente,rsync
não realiza nenhuma criptografia por si só; ainda é capaz de usar outros mecanismos (ssh por exemplo) para executar criptografia.Além da segurança, a criptografia também tem um grande impacto na sua velocidade de transferência, bem como na sobrecarga da CPU. (Minha experiência é que
rsync
pode ser significativamente mais rápido quescp
.)Confira esta postagem para saber quando a
rsync
criptografia está ativada.fonte
O scp é melhor para um arquivo.
OR uma combinação de
tar
& compressão para conjuntos de dados menores, como árvores de código-fonte com pequenos recursos ( ou seja : imagens, sqlite etc ).No entanto , quando você começar a lidar com volumes maiores, diga:
Torna-se impraticável criar um arquivo zip / tar.gz para transferir com o scp neste momento para os limites físicos do servidor hospedado.
Como um exercício, você pode fazer algumas ginástica como tubulação
tar
parassh
e redirecionando os resultados em um remoto arquivo. (economizando a necessidade de criar um swap ou clone temporário, também conhecido como zip ou tar.gz)No entanto ,
O rsync simplifica esse processo e permite transferir dados sem consumir espaço em disco adicional.
Além disso ,
As atualizações contínuas (cron?) Usam alterações mínimas versus cópias clonadas completas aceleram grandes migrações de dados ao longo do tempo.
tl; dr
scp
== pequena escala (com espaço para criar arquivos compactados na mesma unidade)rsync
== grande escala (com a necessidade de fazer backup de grandes dados e sem espaço)fonte
é melhor pensar em um contexto prático. Em nossa equipe, usamos
rsync -aP
para substituir um host cassandra ruim em nosso cluster. Não podemos fazer isso com o scp (preservação lenta e sem progresso).fonte