Articolo originale: SCP Linux Command – How to SSH File Transfer from Remote to Local

Quando stai lavorando con un computer o qualunque altro dispositivo elettronico che abbia capacità di conservazione dati, potresti avere bisogno di distribuire o condividere informazioni e file in vari modi.

Alcuni del file più comunemente condivisi sono file audio, immagine, video, pdf o qualunque altro formato di documento.

La maggior parte delle volte, l'informazione condivisa sarà privata o confidenziale, ovvero riservata a una specifica persona o gruppo di persone, quindi la protezione dell'informazione è essenziale.

Quando si tratta di dispositivi come i cellulari, abbiamo app che facilitano il trasferimento di file come xender, appshare e talvolta si utilizza il bluetooth. Quando si parla di computer la situazione non è diversa, abbiamo software e anche siti che facilitano l'operazione.

Per quanto riguarda la condivisione di dati in sistemi operativi tipo Unix, come Linux, ci sono molteplici comandi tra i quali scegliere per condividere informazioni. Oggi ci concentriamo sul comando SCP, che ti consente di condividere file e dati facilmente e in modo sicuro.

Nel mercato odierno, avere competenze di Linux è essenziale, e ancora più utile se sei un amministratore di sistema. Come tale, la condivisione dei dati costituirà una delle tue attività giornaliere e dovrai assicurarti che i dati condivisi siano sicuri; usando il comando SCP sarai in grado di ottenere tutto questo.

Prima di partire, iniziamo capendo cos'è SCP, poi impareremo alcuni comandi che si possono usare per trasferire i file.

Cosa sono i comandi SCP?

SCP è l'acronimo di Secure Copy Protocol (Protocollo di Copia Sicuro). È una utilità da riga di comando che consente all'utente di copiare in modo sicuro file e directory tra due sistemi, in genere unix o linux.

Il protocollo assicura che la trasmissione dei file sia criptata per evitare che qualunque malintenzionato possa ottenere informazioni sensibili.

In parole povere, possiamo dire che SCP costituisce un'opzione più sicura rispetto al comando di copia cp.

È anche importante notare che SCP usa la codifica con una connessione SSH (Shell Sicura), che fa in modo che i dati trasferiti siano protetti da attacchi.

Sintassi di SCP

Proprio come qualunque altro comando usato nel terminale, anche SCP ha un formato da utilizzare affinché l'esecuzione sia positiva. Comprendendo la sintassi, per te sarà facile scrivere i comandi:

scp [OPZIONI] [[user@]src_host:]file1 [[user@]dest_host:]file2
  • scp - Inizializza il comando e assicura che si attivi una shell sicura.
  • OPZIONI - Concedono diversi permessi a seconda di come sono usate. Alcune delle più comuni sono:
  • P (maiuscola) - specifica la porta per stabilire la connessione via host remoto.
  • p (minuscola) - mantiene la marca temporale per facilitare modifica e accesso.
  • r - copia una intera directory ricorsivamente.
  • q - copia i file in modalità silenziosa, non mostra i messaggi di avanzamento.
  • C - per la compressione dei dati durante la trasmissione.

Per ulteriori informazioni sulle opzioni del comando leggi  la pagina di manuale con le opzioni complete per scp (in lingua inglese)

  • src_host - dove si trova il file da copiare. La sorgente può essere sia un client che un server a seconda dell'origine del file.
  • dest_host - dove verrà copiato il file.

Visto che stiamo avendo a che fare con trasmissioni di file, significa che avremo coinvolta più di una macchina per rendere possibile il processo. Possiamo usare SCP nei casi seguenti:

  • Copiare file nella stessa macchina.
  • Copiare file da un host locale a un host remoto e viceversa.
  • Copiare file tra server remoti diversi.

A questo punto è giusto affermare che prima di usare un qualsiasi comando SCP devi avere sistemato alcune cose:

  • SSH installato sulle macchine server e client.
  • Accesso root sulle macchine server e client.

Con queste due cose a posto, puoi partire. Iniziamo vedendo i comandi in azione.

Comuni Utilizzi di SCP

Copiare File da Host Locale a Server Remoto

Quando si copiano file, essere in grado di trasferire file/dati da locale verso un server remoto è essenziale. Quando usi il comando SCP dovrai specificare alcune cose affinché possa funzionare.

Dovrai specificare il percorso del file da copiare oltre al percorso dell'host remoto, dove il file sarà copiato.

Esaminiamo uno scenario nel quale abbiamo il file test.txt e abbiamo bisogno di farne una copia su un server remoto, la sintassi del nostro comando sarà la seguente:

scp test.txt userbravo@destination:/location2

Non abbiamo limiti rispetto al numero di file che possiamo copiare. Supponiamo di avere sul nostro desktop una cartella chiamata web dove abbiamo dei file con estensione .php che dobbiamo copiare nella directory home di un server remoto. Una volta posizionati nella cartella web, il nostro comando sarà:

scp *.php userbravo@destination_host:/~/

*.php - copia tutti i file della directory corrente con estensione .php nella cartella specificata:
/~/ - significa copiali nella directory home.

Diciamo che vuoi copiare un file chiamato test.txt su un server remoto salvandolo con un nome diverso, in questo caso specificando anche la porta usata da SSH per la trasmissione, il comando sarà:

scp -P 8080 test.txt userbravo@host_destinazione:/user/home/test2.txt

In questo esempio abbiamo copiato il file test.txt dalla macchina locale a quella remota, dove sarà salvato con il nome test2.txt, utilizzando la porta 8080.

Copiare File da Remoto a Locale

Usiamo un esempio per comprendere meglio questo caso. Abbiamo una situazione in cui vogliamo copiare dei file dal sistema remoto. Per copiare i file prima devi chiamare SCP, seguito da username@indirizzoIP (o nome host) del server remoto, e poi dal percorso dei file da trasferire, preceduto dal simbolo :.

Se non specifichi il percorso, viene considerata come default la directory home dell'utente remoto specificato, poi segue l'indicazione del percorso verso il quale si vuole salvare il file localmente.

La Sintassi

scp <username_remoto>@<IPoNomeHost>:<PercorsoAlFileRemoto>   <PosizioneFileSuLocale> 

Diciamo che voglio copiare un file chiamato linuxcheatsheet da un dispositivo remoto il cui indirizzo IP è 192.168.1.100.

Il file linuxcheatsheet è conservato nella directory home dell'utente lary con il quale sono autenticato nella macchina remota. Pertanto, dopo i due punti, non ho bisogno di specificare il percorso in quanto corrisponde a quello predefinito, vale a dire la directory home, e digito semplicemente il nome del file (“linuxcheatsheet”). Di seguito, specifico la directory corrente della macchina locale come posizione nel quale salvare il file identificandola con un puntino.

scp lary@192.168.1.100:linuxcheatsheet .

Copiare File tra Host Remoti

Il bello di usare SCP per trasferire i file è che non solo consente connessioni tra macchine locali e remote, ma anche tra server remoti.

Diciamo che vogliamo copiare un file chiamato test.txt da un host remoto verso un altro host remoto. La sintassi del comando sarà questa:

scp user1@host1.com:/files/test.txt user2@host2.com:/files

Ciò che farà questo comando è copiare test.txt dalla cartella files dell'utente user1 dall'host remoto host1.com verso l'host remoto host2.com nella cartella files dell'utente user2.

Copiare più File

Quando si copiano più file da locale a remoto, tutto quello che devi fare è specificare il loro percorso come sorgente.

La Sintassi

scp file1 file2 ... user@<nome_host>:Destinazione

Se volessimo copiare i file file1.txt, file2.txt, file3.txt e file4.txt dalla directory locale corrente verso l'host remoto host1.com nella directory Desktop dell'utente user1 il comando sarà il seguente:

scp file1.txt file2.txt file3.txt file4.txt user1@host1.com:/home/user1/Desktop

Punti da Ricordare:

  • Per poter copiare i file devi avere il permesso di lettura sulla sorgente e di scrittura sulla destinazione.
  • Il comando SCP si affida a SSH per il trasferimento sicuro dei dati, il che vuol dire che è necessaria una password per autenticarsi nel sistema remoto (oppure avere configurato SSH in modo che accetti connessioni con chiavi).
  • Attento quando copi file che hanno stesso nome e percorso di sorgente e destinazione, visto che SCP li sovrascrive se esistono già, senza avvertimento.
  • Per separare il nome dell'host remoto dal percorso del file usa i due punti :.

Che tu sia un ingegnere di supporto, un amministratore di sistema o anche uno sviluppatore in crescita come me, che usa Linux e vuole imparare questo sistema operativo, è probabile che a un certo punto dovrai trasferire file. E conoscere questi semplici comandi SCP ti tornerà utile.

In questo articolo, abbiamo trattato alcuni degli scenari più comuni in cui puoi utilizzare SCP, spero che tu abbia imparato qualcosa di nuovo.

Buona Programmazione ❤