SCP (copia protetta) è un'utilità della riga di comando che consente di copiare in modo sicuro file e directory tra due posizioni.
Con scp
, puoi copiare un file o una directory:
- Dal tuo sistema locale a un sistema remoto.
- Da un sistema remoto al tuo sistema locale.
- Tra due sistemi remoti dal tuo sistema locale.
Quando si trasferiscono dati con scp
, sia i file che la password sono crittografati in modo che chiunque curi il traffico non riceva nulla di sensibile.
In questo tutorial, ti mostreremo come usare scp
comando attraverso esempi pratici e spiegazioni dettagliate delle opzioni scp più comuni.
Sintassi del comando SCP #
Prima di entrare in come usare il scp
comando, iniziamo esaminando la sintassi di base.
Il scp
la sintassi del comando assume la forma seguente:
scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2
OPTION
- opzioni scp come cifratura, configurazione ssh, porta ssh, limite, copia ricorsiva, ecc.[user@]SRC_HOST:]file1
- File sorgente.[user@]DEST_HOST:]file2
- File di destinazione
I file locali devono essere specificati utilizzando un percorso assoluto o relativo, mentre i nomi dei file remoti devono includere una specifica utente e host.
scp
fornisce una serie di opzioni che controllano ogni aspetto del suo comportamento. Le opzioni più utilizzate sono:
-P
- Specifica la porta ssh dell'host remoto.-p
- Conserva la modifica dei file e i tempi di accesso.-q
- Utilizzare questa opzione se si desidera eliminare la barra di avanzamento e i messaggi di non errore.-C
- Questa opzione forzascp
per comprime i dati man mano che vengono inviati alla macchina di destinazione.-r
- Questa opzione dice ascp
per copiare le directory in modo ricorsivo.
Prima di iniziare #
Il scp
il comando si basa su ssh
per il trasferimento dei dati, quindi richiede una chiave ssh o una password per l'autenticazione sui sistemi remoti.
I due punti (:
) è come scp
distinguere tra località locali e remote.
Per poter copiare i file, devi avere almeno i permessi di lettura sul file di origine e di scrittura sul sistema di destinazione.
Fai attenzione quando copi file che condividono lo stesso nome e posizione su entrambi i sistemi, scp
sovrascriverà i file senza preavviso.
Quando si trasferiscono file di grandi dimensioni, si consiglia di eseguire scp
comando all'interno di uno screeno tmuxsession.
Copia file e directory tra due sistemi con scp
#
Copia un file locale su un sistema remoto con scp
Comando #
Per copiare un file da un sistema locale a un sistema remoto, eseguire il comando seguente:
scp file.txt [email protected]:/remote/directory
Dove file.txt
è il nome del file che vogliamo copiare, remote_username
è l'utente sul server remoto, 10.10.0.2
è l'indirizzo IP del server. Il /remote/directory
è il percorso della directory in cui si desidera copiare il file. Se non specifichi una directory remota, il file verrà copiato nella home directory dell'utente remoto.
Ti verrà richiesto di inserire la password utente e il processo di trasferimento inizierà.
[email protected]'s password:
file.txt 100% 0 0.0KB/s 00:00
L'omissione del nome del file dalla posizione di destinazione copia il file con il nome originale. Se vuoi salvare il file con un nome diverso, devi specificare il nuovo nome del file:
scp file.txt [email protected]:/remote/directory/newfilename.txt
Se SSH sull'host remoto è in ascolto su una porta diversa da quella predefinita 22, puoi specificare la porta usando il -P
argomento:
scp -P 2322 file.txt [email protected]:/remote/directory
Il comando per copiare una directory è molto simile a quando si copiano i file. L'unica differenza è che devi usare -r
flag per ricorsivo.
Per copiare una directory da un sistema locale a un sistema remoto, usa il -r
opzione:
scp -r /local/directory [email protected]:/remote/directory
Copia un file remoto su un sistema locale usando scp
Comando #
Per copiare un file da un sistema remoto a un sistema locale, utilizza la posizione remota come origine e la posizione locale come destinazione.
Ad esempio per copiare un file chiamato file.txt
da un server remoto con IP 10.10.0.2
eseguire il comando seguente:
scp [email protected]:/remote/file.txt /local/directory
Se non hai impostato un accesso SSH senza password sulla macchina remota, ti verrà chiesto di inserire la password utente.
Copia un file tra due sistemi remoti usando scp
Comando #
A differenza di rsync
, quando si utilizza scp
non è necessario accedere a uno dei server per trasferire file da uno a un altro computer remoto.
Il comando seguente copierà il file /files/file.txt
dall'host remoto host1.com
nella directory /files
sull'host remoto host2.com
.
scp [email protected]:/files/file.txt [email protected]:/files
Ti verrà chiesto di inserire le password per entrambi gli account remoti. I dati verranno trasferiti direttamente da un host remoto all'altro.
Per instradare il traffico attraverso la macchina su cui viene emesso il comando, utilizzare il -3
opzione:
scp -3 [email protected]:/files/file.txt [email protected]:/files
Conclusione #
In questo tutorial, hai imparato a usare scp
comando per copiare file e directory.
Potresti anche voler configurare un'autenticazione basata su chiave SSH e connetterti ai tuoi server Linux senza inserire una password.
Se ti connetti regolarmente agli stessi sistemi, puoi semplificare il flusso di lavoro definendo tutte le connessioni nel file di configurazione SSH.