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] [[email protected]]SRC_HOST:]file1 [[email protected]]DEST_HOST:]file2
  • OPTION- opzioni come cifratura, configurazione ssh, porta ssh, limite, copia ricorsiva ... ecc.
  • [[email protected]]SRC_HOST:]file1 - File di origine.
  • [[email protected]]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à a scp 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.