Existe alguma razão para usar scp em vez de rsync?


62

Existe um motivo para usar em scpvez de rsync? Não vejo razão para usá-lo scpnovamente, rsyncfaz tudo o que scpfaz, com mais segurança (pode preservar links simbólicos etc.).


6
Resposta curta: Não. O scp nunca é prejudicial.
Shadur 31/05

2
O @Shadur scp é prejudicial, pois substitui os arquivos de destino existentes por padrão. É o rsync, mas pelo menos permite limitar o possível dano com -u.
Gilles 'SO- stop be evil'

3
@ Gilles Como em qualquer ferramenta, você deve entender o que faz e como faz para usá-lo com segurança.
Alex Chamberlain

8
Nesse contexto, regular cpe rmseria considerado "prejudicial" - e se você definir "prejudicial" como "pode ​​me ferrar se eu fizer algo estúpido", rsyncnão será menos prejudicial.
Shadur

11
Em sistemas sem rsyncinstalação, o uso rsync(obviamente) nem é possível.
Kusalananda

Respostas:


46

O scp fornece um método semelhante ao cp para copiar arquivos de uma máquina para uma máquina remota através de uma conexão SSH segura.

O rsync permite sincronizar pastas remotas.

Eles são programas diferentes e ambos têm seus usos. O scp é sempre seguro, enquanto o rsync deve passar pelo SSH para ser seguro.


9
Além disso, com certeza o rsync deve ser instalado na outra extremidade.
Ckhan

3
@ckhan, não, ele pode copiar sem ter nada instalado no outro lado, será apenas menos eficiente.
Mikebloch

2
Eu gosto da simplicidade do scp.
Alex Chamberlain

2
@mikebloch Como você faz isso? É um novo recurso? Apenas tentei isso usando a versão 3.0.9. e reclamou que não conseguia encontrar rsyncno controle remoto.
Alexios

11
@ mikebloch, ele deve ser instalado no servidor para fazer os cálculos da soma de verificação, o que pode adicionar muita carga de CPU ao servidor. É por isso que a maioria dos sites grandes não suporta e por que zsyncfoi criado como uma alternativa.
Psusi

19

Uma das principais coisas (que eu acho que ninguém mencionou) é que, se você estiver transferindo grandes quantidades de dados ou arquivos, e se a transferência for desconectada antes da conclusão, por qualquer motivo, o rsync pegará onde parou. Considerando que scp não.

Eu uso o scp se quiser transferir um ou dois arquivos ou diretórios. Vou ao rsync para obter dados de tamanho de vários GB.


3
Pode valer a pena acrescentar que o --partialsinalizador é útil ao transferir arquivos grandes. rsynccontinuará de onde parou no arquivo, em vez de iniciá-lo novamente.
Flup

Como o @Flup mencionou, o rsync não deixará nenhum arquivo em trânsito para você retomar, a menos que você use a opção --partial. Esses arquivos estão ocultos por padrão no diretório de destino. Você pode usar --partial-dir para colocar todos esses arquivos em um único diretório.
Lester Cheung #

Bem, rsync -vP username@host:/path/to/file .também farei isso. Veja esta resposta em Stackoverflow
Devesh Saini

9

rsync : transfere deltas (usando seu algoritmo de transferência Delta ) entre:

  1. hosts locais e remotos

scp : transfere arquivos inteiros entre:

  1. hosts locais e remotos
  2. remotas e distantes anfitriões

Resumo: scppode transferir arquivos entre dois hosts remotos enquanto rsyncnão o suporta.


O rsync pode transferir arquivos entre dois hosts remotos. De fato, rsync a host:bé equivalente a scp a host:b.
Brandizzi

Foi o que escrevi: o rsync pode transferir deltas entre hosts locais e remotos, mas o scp não se limita apenas a isso, pode transferir deltas entre dois hosts remotos. @brandizzi
Devesh Saini

2

O usuário Chris no Webhosting Talk escreve:

rsynccompara os arquivos em cada extremidade e transfere apenas as partes alteradas dos arquivos alterados. Quando você transfere arquivos pela primeira vez, ele se comporta de maneira semelhante scp, mas, para uma segunda transferência, onde a maioria dos arquivos permanece inalterada, ele envia muito menos dados do que scp. Também é uma maneira conveniente de reiniciar transferências com falha - você apenas reemitirá o mesmo comando e ele continuará onde parou antes, enquanto scpcomeçará novamente do zero.


0

scpé mais simples de usar, pois leva menos argumentos. Eu pego o myselv usando scp em vez de rsyncapenas transferir um único arquivo. Provavelmente, estou com preguiça de definir um alias para rsync ... ;-)


11
Hmmm, por que é assim? rsync a host:bé equivalente a scp a host:b, mesmo número de argumentos.
Mikebloch 09/04

11
@mikebloch Duas letras a mais para digitar ... ;-) No passado, eu tinha que fornecer "-e ssh -a" para obter o resultado apropriado. Agora que "-e ssh" é o padrão, este pode ser um jogo diferente.
Nils

0

Créditos para @tomrunia em https://gist.github.com/KartikTalwar/4393116

rsync -aHAXxv --numeric-ids --delete --progress \
  -e "ssh -T -c aes128-gcm@openssh.com -o Compression=no -x" \
  [source_directory] user@hostname:[target_directory]/

Preste atenção --delete, não o utilize se desejar manter arquivos estranhos em diretórios de destino

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.