Come usare il comando scp in Linux

Come usare il comando scp in Linux

Il comando scprende semplice e sicura la copia di file tra macchine Linux. Utilizza la sicurezza SSH, ma la parte migliore è che è semplice. Se puoi usare cp, puoi usare scp.

Secure Copy Protocol e scp

Definiamo un paio di termini: c’è SCP e c’è scp. La lettera maiuscola SCP sta per Secure Copy Protocol . Minuscolo scpsignifica sicuro cp. In altre parole, SCP è un protocollo e scpun programma.

scpè stato progettato per essere un mezzo sicuro e affidabile per copiare file tra computer Linux remoti. Utilizza SSH per stabilire connessioni sicure. SSH, o Secure Shell, è un protocollo di rete crittografico spesso utilizzato per accedere e accedere a computer Linux remoti. Sulle distribuzioni Linux, la funzionalità SSH è fornita da OpenSSH.

SCP è in qualche modo obsoleto e in questi giorni sono state sollevate preoccupazioni sul suo utilizzo. A partire da OpenSSH 8.8, SCP è deprecato. Le moderne implementazioni scputilizzano il protocollo di trasferimento file sicuro per impostazione predefinita. SSH è ancora utilizzato per connessioni sicure, ma i trasferimenti di file vengono eseguiti tramite SFTP. È tutto invisibile e accade magicamente sotto il cofano, e la scpsintassi rimane la stessa.

Questo rsyncprogramma è preferito scp, ma potresti incontrare un computer che non lo ha rsyncinstallato e per il quale non hai i privilegi di root, il che significa che non puoi installarlo. Per copiare file da PC a PC su una rete offline scpva bene. Per scpfunzionare, devi avere SSH in esecuzione su tutti i computer su e da cui copierai.

Per vedere la versione di OpenSSH installata sul tuo computer, digita:

ssh -V

Copia di un singolo file

Come il cpcomando standard, scpcopia i file dalla posizione di origine alla destinazione. Per copiare un file su un computer remoto, è necessario conoscere l’indirizzo IP o il nome di rete del computer remoto. È inoltre necessario disporre delle credenziali per un account utente con autorizzazioni di scrittura per la posizione in cui si sta caricando il file.

Per inviare un file denominato “sample.txt” a un computer denominato “fedora-34” sulla rete locale, utilizzare la seguente sintassi:

scp. /sample.txt dave@fedora-34.local:/home/dave/Downloads/

La squadra è composta da:

  • scp: comando scp
  • ./sample.txt: il file che invieremo. È nella directory corrente.
  • dave@: l’account utente sulla macchina remota a cui invieremo il file.
  • fedora-34.local: il nome di rete del computer remoto.
  • :/home/dave/Downloads/: Il percorso in cui copiare il file sul computer remoto. Nota i due punti “:” che separano il nome del computer e il percorso.

Ti verrà chiesto di inserire la password per l’account sul computer remoto, dopodiché il file verrà copiato.

Se si desidera che il file abbia un nome diverso sulla macchina remota, è possibile aggiungere il nome del file al percorso di destinazione. Per copiare lo stesso file e denominarlo “other-file.txt”, utilizzare la seguente sintassi:

scp. /sample.txt dave@fedora-34.local:/home/dave/Downloads/different-file.txt

Il comando scpsovrascriverà automaticamente i file esistenti, quindi fai attenzione quando copi i file. Se un file con lo stesso nome del file copiato esiste già sul computer di destinazione, verrà sovrascritto e perso.

Se il computer di destinazione non utilizza la porta SSH 22 predefinita, è possibile utilizzare il -Pparametro (numero di porta) per specificare il numero di porta appropriato.

Ottenere un file

Per copiare un file da un server remoto, è sufficiente specificare il server remoto come origine e specificare il percorso locale in cui si desidera copiare il file come destinazione. Copieremo un file chiamato “development-plan.md” dalla macchina remota alla directory corrente sulla macchina locale.

scp dave@fedora-34.local:/home/dave/Downloads/development-plan.md.

Se aggiungi un nome file al percorso locale, il file verrà copiato e gli verrà assegnato quel nome.

scp dave@fedora-34.local:/home/dave/Downloads/development-plan.md. /dp-1.md

Il file viene copiato ma rinominato con il nome file specificato.

ls -hl *.md

Copia di più file

Copiare più file in qualsiasi direzione è molto semplice. Puoi elencare tutti i file di origine che desideri. Qui stiamo copiando due file markdown e un file CSV.

scp. /dp-1.md. /dp-2.md. /dp-3.csv dave@fedora-34.local:/home/dave/Downloads/

Tre file vengono copiati sul computer remoto. Puoi anche usare i caratteri jolly. Questo comando fa lo stesso del comando precedente.

scp. /dp. dave@fedora-34.local:/home/dave/Downloads/

Copia ricorsiva di directory

L’ -ropzione (ricorsiva) consente di copiare interi alberi di directory con un singolo comando. Abbiamo inserito due file in una directory denominata “data” e creato una directory denominata “CSV” all’interno della directory “data”. Abbiamo inserito il file CSV nella directory “data/CSV”.

Questo comando copia i file e ricrea la struttura delle directory sul computer remoto.

scp -r. /data dave@fedora-34.local:/home/dave/Downloads/

Copia di file tra server remoti

Puoi anche istruire a scpcopiare file da un server remoto a un altro. La sintassi è piuttosto semplice. Fornisci il nome dell’account e l’indirizzo di rete del server di origine e il nome dell’account e l’indirizzo di rete del server di destinazione. I file vengono copiati dal server di origine e copiati in una posizione sul server di destinazione.

Sebbene la sintassi sia semplice, assicurarsi che tutto il resto sia a posto richiede un po’ più di riflessione. Ovviamente, la posizione in cui stai tentando di copiare i file sul server remoto deve essere accessibile dall’account utente specificato nella riga di comando. E quell’account utente deve avere accesso in scrittura a quella posizione.

Un prerequisito più sottile è che l’accesso SSH deve essere impostato tra il computer locale e il computer di origine e tra i server di origine e di destinazione. Assicurati di poter utilizzare SSH per accedere al server di destinazione dal server di origine. Se non puoi farlo, scpnon sarai in grado di connetterti.

L’impostazione di chiavi SSH per consentire l’accesso autenticato ma senza password è di gran lunga il metodo preferito. L’uso delle password crea confusione molto rapidamente e, poiché viene richiesto di inserire una password per ogni account utente, non consente di automatizzare completamente il processo con uno script.

Impostiamo le chiavi SSH per gli account utente che utilizziamo su ciascun server remoto. Ciò ha fornito un accesso SSH continuo all’altro server per i due utenti. Questo ci consente di trasferire file in entrambe le direzioni utilizzando questi due account utente.

Per copiare i file dall’account utente “davem” sulla macchina Manjaro all’account “dave” sulla macchina Fedora utilizzando un scpcomando emesso dalla nostra macchina Ubuntu locale, viene utilizzata la seguente sintassi:

scp davem@manjaro20-0-1.local:/home/davem/man. dave@fedora-34.local:/home/dave/

Torniamo silenziosamente alla riga di comando. Non ci sono indicazioni che sia successo qualcosa. Partendo dal presupposto che nessuna notizia sia una buona notizia, riportiamo scpsolo errori per questa copia remota. Quando controlliamo il computer Fedora, vediamo che i file dal computer Manjaro sono stati copiati e recuperati.

Per impostazione predefinita, i file vengono copiati direttamente dal computer di origine al computer di destinazione. Puoi ignorarlo usando l’ -3opzione (a tre vie).

Con questa opzione, i file vengono trasferiti dalla destinazione all’origine tramite il computer locale. Ciò richiede un accesso SSH senza interruzioni dalla macchina locale alla macchina di destinazione.

scp -3 davem@manjaro20-0-1.local:/home/davem/man. dave@fedora-34.local:/home/dave/

Non vi è ancora alcuna indicazione che sia successo qualcosa, anche durante il trasferimento di file tramite il computer locale. La prova del budino, ovviamente, sta controllando il computer di destinazione.

Altre opzioni

L’ -popzione (conserva attributi file) conserverà la creazione del file originale, il proprietario e i flag di accesso per i file caricati. Avranno gli stessi metadati dei file originali sul computer di origine.

Se vengono visualizzati messaggi di errore, provare a riprovare il comando e utilizzare il -vflag (dettagliato) per visualizzare i dettagli sul tentativo di trasferimento. Dovresti essere in grado di determinare il punto di errore nell’output.

L’ -Copzione (comprimi) comprime i file mentre vengono copiati e li decomprime quando vengono ricevuti. Questo è qualcosa che risale all’era della comunicazione modem lenta tra computer. La riduzione delle dimensioni del carico utile può ridurre il tempo di trasmissione.

Attualmente, il tempo impiegato per comprimere e decomprimere i file è probabilmente più della differenza tra i trasferimenti compressi e non compressi. Ma poiché scpè meglio utilizzato per copiare file tra computer sulla stessa rete locale, la velocità di trasferimento non dovrebbe essere un grosso problema.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *