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.).

mikebloch
fonte
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.

Alex Chamberlain
fonte
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.

Ravi
fonte
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.

Devesh Saini
fonte
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.

nkint
fonte
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 ... ;-)

Nils
fonte
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 [email protected] -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

Jorj
fonte