Introduzione
SCP (secure copy) è un'utilità della riga di comando che consente di copiare file e directory in modo sicuro tra due posizioni.
Con scp
, è possibile 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 sistema locale.
Quando si trasferiscono i dati con scp
, sia i file che la password sono crittografati.
In questo tutorial, ti mostreremo come usare il comando scp
attraverso esempi pratici e spiegazioni dettagliate delle opzioni scp più comuni.
Sintassi del comando SCP
Prima di andare su come utilizzare il comando scp
, iniziamo esaminando la sintassi di base.
La sintassi scp
del comando assume la forma seguente:
scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2
OPTION
- opzioni come cifratura, configurazione ssh, porta ssh, limite, copia ricorsiva ... ecc.[user@]SRC_HOST:]file1
- File di origine.[user@]DEST_HOST:]file2
- File di destinazione.
I file locali dovrebbero essere specificati usando un percorso assoluto o relativo mentre i nomi dei file remoti dovrebbero 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
Preserva la modifica dei file e i tempi di accesso.-q
Utilizzare questa opzione se si desidera sopprimere l'indicatore di stato e i messaggi non di errore.-C
Questa opzione forzeràscp
a comprimere i dati quando vengono inviati al computer di destinazione.-r
Questa opzione permetterà ascp
di copiare ricorsivamente le directory.
Prerequisiti
Il comando scp
si basa sul trasferimento ssh
dei dati, quindi richiede una chiave ssh o una password per l'autenticazione sui sistemi remoti.
I due punti :
consentono di distinguere tra host locali e remoti.
Per poter copiare i file è necessario disporre almeno delle autorizzazioni di lettura sul file di origine e delle autorizzazioni di scrittura sul sistema di destinazione.
Prestare attenzione quando si copiano file che condividono lo stesso nome e lo stesso percorso su entrambi i sistemi, scp
sovrascrive i file senza preavviso.
Quando si trasferiscono file di grandi dimensioni, si consiglia di eseguire il comando scp
utilizzando Screen o all'interno di una sessione tmux.
Copiare un file locale su un sistema remoto
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. /remote/directory
è il percorso della directory dove si desidera copiare il file. Se non si specifica una directory remota, il file verrà copiato nella home directory dell'utente remoto.
Ti verrà richiesto di inserire la password dell'utente e inizierà il processo di trasferimento.
[email protected]'s password:
file.txt 100% 0 0.0KB/s 00:00
Se si omette il nome file dalla posizione di destinazione, il file viene copiato con il nome originale. Se si desidera salvare il file con un nome diverso, è necessario 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 dalla 22 predefinita, è possibile specificare la porta utilizzando l'argomento -P
:
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 è necessario utilizzare la bandiera -r
per ricorsivo.
Per copiare una directory da un sistema locale a un sistema remoto, utilizzare l'opzione -r
:
scp -r /local/directory [email protected]:/remote/directory
Copiare un file remoto su un sistema locale
Per copiare un file da un sistema remoto a un sistema locale, utilizzare la posizione remota come origine e la posizione locale come destinazione.
Ad esempio, per copiare un file denominato 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 al computer remoto, ti verrà chiesto di inserire la password dell'utente.
Copiare un file tra due sistemi remoti
Diversamente rsync
, quando si utilizza scp
non è necessario accedere a uno dei server per trasferire file da uno all'altro computer remoto.
Il seguente comando 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à richiesto 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 l'opzione -3
:
scp -3 [email protected]:/files/file.txt [email protected]:/files
Conclusione
In questo tutorial, hai imparato come usare il comando scp
per copiare file e directory.
È inoltre possibile impostare un'autenticazione basata su chiave SSH e connettersi ai server Linux senza immettere una password.