C'è mai un motivo per usare scp invece di rsync?


62

C'è un motivo per usare scpinvece di rsync? Non riesco a vedere alcun motivo per utilizzare scpmai più, rsyncfa tutto ciò che scpfa, con maggiore sicurezza (può preservare i collegamenti simbolici ecc.).


6
Risposta breve: No. scp non è mai dannoso.
Shadur,

2
@Shadur scp è dannoso in quanto sovrascrive i file di destinazione esistenti per impostazione predefinita. Quindi è rsync, ma almeno consente di limitare il possibile danno con -u.
Gilles 'SO- smetti di essere malvagio'

3
@Gilles Come con qualsiasi strumento, devi capire cosa fa e come lo fa per usarlo in sicurezza.
Alex Chamberlain,

8
In quel contesto, regolare cpe rmverrebbe considerato "dannoso" - e se si definisce "dannoso" come "può rovinarmi se faccio qualcosa di stupido", rsyncnon è meno dannoso.
Shadur,

1
Sui sistemi senza rsyncinstallazione, l'utilizzo non rsyncè (ovviamente) nemmeno possibile.
Kusalananda

Risposte:


46

scp fornisce un metodo simile a cp per copiare i file da una macchina a una macchina remota tramite una connessione SSH sicura.

rsync ti consente di sincronizzare le cartelle remote.

Sono programmi diversi ed entrambi hanno i loro usi. scp è sempre sicuro, mentre rsync deve viaggiare su SSH per essere sicuro.


9
Inoltre, abbastanza sicuro che rsync debba essere installato dall'altra parte.
ckhan,

3
@ckhan, no può copiare senza aver installato nulla sull'altro lato, sarà solo meno efficiente.
mikebloch,

2
Mi piace la semplicità di SCP.
Alex Chamberlain,

2
@mikebloch Come lo fai? È una nuova funzionalità? Ho appena provato a utilizzare la versione 3.0.9. e si lamentava di non poterlo trovare rsyncsul telecomando.
Alessio

1
@mikebloch, deve essere installato sul server per eseguire i calcoli del checksum, che può aggiungere molto carico alla CPU sul server. Questo è il motivo per cui la maggior parte dei siti di grandi dimensioni non lo supporta e perché è zsyncstato creato in alternativa.
psusi

19

Una delle cose principali (che credo non sia stato menzionato da nessuno) è che se si trasferiscono grandi quantità di dati o file e se il trasferimento viene disconnesso prima del completamento per qualsiasi motivo, rsync lo riprenderà da dove era stato interrotto. Considerando che scp non lo fa.

Uso scp se voglio trasferire uno o un paio di file o directory. Vado a rsync per dati di dimensioni multi GB.


3
Potrebbe valere la pena aggiungere che il --partialflag è utile quando si trasferiscono file di grandi dimensioni. rsyncriprenderà da dove era stato interrotto all'interno del file anziché riavviarlo.
Flup,

Come accennato da @Flup, rsync non lascerà in giro alcun file in transito per riprenderlo a meno che non si usi l'opzione --partial. Questi file sono nascosti per impostazione predefinita nella directory di destinazione. Puoi usare --partial-dir per mettere tutti questi file in una singola directory.
Lester Cheung

Bene, rsync -vP username@host:/path/to/file .lo farà anche io. Visualizza questa risposta su Stackoverflow
Devesh Saini,

9

rsync : trasferisce delta (usando il suo algoritmo di trasferimento delta ) tra:

  1. host locali e remoti

scp : trasferisce interi file tra:

  1. host locali e remoti
  2. host remoti e remoti

Riepilogo: scppuò trasferire file tra due host remoti mentre rsyncnon lo supporta.


rsync può trasferire file tra due host remoti. In effetti, rsync a host:bè equivalente a scp a host:b.
Brandizzi,

È quello che ho scritto, rsync può trasferire delta tra host locali e remoti, ma scp non si limita a questo, ma può trasferire delta tra due host remoti. @brandizzi
Devesh Saini,

2

L'utente Chris di Webhosting Talk scrive:

rsyncconfronta i file a ciascuna estremità e trasferisce solo le parti modificate dei file modificati. Quando trasferisci i file la prima volta, si comporta in modo molto simile scp, ma per un secondo trasferimento, in cui la maggior parte dei file rimane invariata, invierà molti meno dati di scp. È anche un modo conveniente per riavviare i trasferimenti non riusciti: basta emettere lo stesso comando e riprenderà da dove era stato interrotto prima, mentre scpricomincerà da zero.


0

scpè più semplice da usare in quanto richiede meno argomenti. Prendo myselv usando scp invece che rsyncse trasferisco solo un singolo file. Probabilmente sono solo pigro per definire un alias da risincronizzare ... ;-)


1
Hmmm, perché è così? rsync a host:bequivale a scp a host:b, stesso numero di argomenti.
mikebloch,

1
@mikebloch Altre due lettere da scrivere ... ;-) In passato ho dovuto fornire "-e ssh -a" per ottenere il risultato corretto. Ora che "-e ssh" è predefinito, questo potrebbe essere un gioco diverso.
Nils,

0

Crediti a @tomrunia su 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]/

Prestare attenzione --delete, non usarlo se si desidera mantenere i file estranei in directory dir

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.