¿Hay alguna razón para usar scp en lugar de rsync?


62

¿Hay alguna razón para usar en scplugar de rsync? No veo ninguna razón para scpvolver a usar , rsynchace todo lo que scphace, con más seguridad (puede preservar enlaces simbólicos, etc.).


66
Respuesta corta: No. scp nunca es dañino.
Shadur

2
@Shadur scp es dañino porque sobrescribe los archivos de destino existentes de forma predeterminada. Así es rsync, pero al menos permite limitar el posible daño con -u.
Gilles 'SO- deja de ser malvado'

3
@Gilles Al igual que con cualquier herramienta, debe comprender qué hace y cómo lo hace para usarla de manera segura.
Alex Chamberlain

8
En ese contexto, regular cpy rmse consideraría "dañino", y si define "dañino" como "puede fastidiarme si hago algo estúpido", rsyncno es menos dañino.
Shadur

1
En sistemas sin rsyncinstalar, el uso rsync(obviamente) ni siquiera es posible.
Kusalananda

Respuestas:


46

scp proporciona un método similar a cp para copiar archivos de una máquina a una máquina remota a través de una conexión SSH segura.

rsync le permite sincronizar carpetas remotas.

Son programas diferentes y ambos tienen sus usos. scp siempre es seguro, mientras que rsync debe viajar a través de SSH para ser seguro.


99
Además, es bastante seguro que rsync debe instalarse en el otro extremo.
ckhan

3
@ckhan, no, puede copiar sin tener nada instalado en el otro lado, será menos eficiente.
mikebloch

2
Me gusta la simplicidad de scp.
Alex Chamberlain

2
@mikebloch ¿Cómo haces eso? ¿Es una nueva característica? Acabo de probar esto usando la versión 3.0.9. y se quejó de que no podía encontrar rsyncen el control remoto.
Alexios

1
@mikebloch, debe instalarse en el servidor para realizar los cálculos de suma de comprobación, lo que puede agregar una gran cantidad de carga de CPU al servidor. Es por eso que la mayoría de los sitios grandes no lo admiten, y por qué zsyncse creó como una alternativa.
psusi

19

Una de las cosas principales (que creo que nadie mencionó) es que si está transfiriendo grandes cantidades de datos o archivos, y si la transferencia se desconecta antes de completarse por cualquier motivo, rsync lo retomará donde lo dejó. Mientras que scp no lo hace.

Yo uso scp si quiero transferir uno o un par de archivos o directorios. Voy a rsync para obtener datos de varios GB.


3
Puede valer la pena agregar que la --partialbandera es útil al transferir archivos grandes. rsynccontinuará donde se quedó dentro del archivo en lugar de comenzar ese archivo nuevamente.
Flup

Como @Flup mencionó, rsync no dejará ningún archivo en tránsito para que pueda reanudarlo a menos que use la opción --partial. Estos archivos están ocultos por defecto en el directorio de destino. Puede usar --partial-dir para colocar todos estos archivos en un solo directorio.
Lester Cheung

Bueno, rsync -vP username@host:/path/to/file .haré esto también. Ver esta respuesta en Stackoverflow
Devesh Saini

9

rsync : transfiere deltas (usando su algoritmo de transferencia Delta ) entre:

  1. hosts locales y remotos

scp : transfiere archivos completos entre:

  1. hosts locales y remotos
  2. hosts remotos y remotos

Resumen: scppuede transferir archivos entre dos hosts remotos mientras rsyncno lo admite.


rsync puede transferir archivos entre dos hosts remotos. De hecho, rsync a host:bes equivalente a scp a host:b.
brandizzi

Eso es lo que escribí, rsync puede transferir deltas entre hosts locales y remotos, pero scp no se limita a eso, sino que puede transferir deltas entre dos hosts remotos. @brandizzi
Devesh Saini

2

El usuario Chris en Webhosting Talk escribe:

rsynccompara los archivos en cada extremo y transfiere solo las partes modificadas de los archivos modificados. Cuando transfiere archivos la primera vez, se comporta de manera bastante similar scp, pero para una segunda transferencia, donde la mayoría de los archivos no cambian, generará muchos menos datos scp. También es una forma conveniente de reiniciar las transferencias fallidas: simplemente vuelve a emitir el mismo comando y continuará donde lo dejó el tiempo anterior, mientras scpque comenzará nuevamente desde cero.


0

scpes más simple de usar ya que requiere menos argumentos. Cojo myselv usando scp en lugar de rsyncsi solo transfiero un solo archivo. Probablemente soy demasiado vago para definir un alias para rsync ... ;-)


1
Hmmm, ¿por qué es así? rsync a host:bes equivalente al scp a host:bmismo número de argumentos.
mikebloch

1
@mikebloch Dos letras más para escribir ... ;-) En el pasado tuve que proporcionar "-e ssh -a" para obtener el resultado correcto. Ahora que "-e ssh" está predeterminado, este podría ser un juego diferente.
Nils

0

Créditos a @tomrunia en 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 atención --delete, no lo use si desea mantener archivos extraños en directorios de destino

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.