12 scp command examples securely transfer files linux
Questo tutorial spiega il protocollo di copia protetta o il comando SCP utilizzato per copiare in modo sicuro i file in Linux e Unix con sintassi ed esempi:
In questo articolo, discuteremo del comando SCP (Secure Copy Protocol) utilizzato per il trasferimento dei file. Vedremo cos'è e come funziona con l'aiuto di alcuni esempi. Quindi, proviamo prima a capire cos'è il comando SCP.
Cosa imparerai:
Cos'è il comando SCP?
SCP (Secure Copy Protocol) è un protocollo di rete utilizzato per trasferire in modo sicuro i file tra host su una rete di computer. Utilizzando questa utilità della riga di comando in sistemi simili a Linux e Unix, è possibile eseguire il trasferimento di file da un host locale a un host remoto o da un host remoto a un sistema locale o tra due host remoti.
(Immagine fonte )
SCP garantisce l'autenticità, la crittografia e la riservatezza dei dati utilizzando il meccanismo SSH (Secure Shell) per il trasferimento dei file. Quindi, i dati in transito sono protetti dagli attacchi di ficcanaso. I client possono caricare e scaricare file e directory da e verso un server utilizzando questo protocollo. Richiede password o chiavi per l'autenticazione. La porta predefinita per SCP è la porta TCP 22.
Il vantaggio del protocollo SCP è che non è necessario avviare una sessione FTP o accedere esplicitamente agli host remoti per il trasferimento dei file.
Sintassi per il protocollo SCP
# 1) Per copiare il file dal locale all'host remoto
scp (options) SourceFileName UserName@TargetHost:TargetPath
Questa è la sintassi di base del comando SCP che copierà il file di origine dall'host corrente al percorso di destinazione sull'host di destinazione utilizzando un account utente. In genere, è abbastanza simile al comando copy cp.
# 2) Per copiare da un host remoto a locale
Per copiare il file:
scp (options) UserName@SourceHost:SourceFilePath TargetFileName
O, scarica semplicemente il file:
scp (options) UserName@SourceHost:SourceFilePath
Per copiare la cartella (in modo ricorsivo):
scp -r UserName@SourceHost:SourceDirectoryPath TargetFolderName
Se l'host remoto utilizza una porta diversa dalla porta predefinita 22, il numero di porta deve essere menzionato esplicitamente nel comando utilizzando l'opzione -P.
# 3) Copia da un computer remoto a un altro computer remoto
scp (options) UserName@SourceHost:SourcePath UserName@TargetHost:TargetPath
Quando copi file da un computer remoto a un altro, il traffico non passa dal tuo computer. Questa operazione avviene direttamente tra i due server remoti.
# 4) Copia di più file
Per copiare più file da localhost a un host remoto:
scp file1 file2 UserName@TargetHost:TargetDirectoryPath
Per copiare più file da un host remoto a una directory corrente di localhost:
scp UserName@SourceHost:SourceDirectoryPath{file1, file2}
Opzioni utilizzate con il comando SCP
Le opzioni più comunemente utilizzate con il comando SCP sono elencate di seguito:
- -C : C, qui sta per abilitare la compressione. Usando questa opzione, la compressione verrà abilitata e la velocità di trasferimento aumenterà durante la copia. Abiliterà automaticamente la compressione all'origine e la decompressione alla destinazione.
- -c: c sta per cifrario. Per impostazione predefinita, SCP utilizza 'AES-128' per la crittografia dei file. Se vuoi cambiare il codice, devi usare l'opzione -c seguito dal nome del codice.
- -io : sta per identificare file o chiave privata. In genere, l'autenticazione basata su chiave viene scelta negli ambienti Linux. Quindi, possiamo menzionare specificamente il file della chiave privata o il file di identità usando l'opzione -i.
- -l : l sta per limite di larghezza di banda. Tramite questa opzione è possibile impostare la larghezza di banda massima da utilizzare. È in Kbits / s.
- -B: Questa opzione viene utilizzata per utilizzare la modalità batch durante la copia.
- -F: Questa opzione viene utilizzata per utilizzare un file ssh_config diverso durante la copia in situazioni in cui è necessario utilizzare reti diverse per connettersi a sistemi Linux. In tali scenari, è necessario assegnare un file di configurazione SSH sostitutivo per utente.
- -P: Se il numero di porta ssh dell'host di destinazione è diverso dal numero di porta predefinito 22, è necessario menzionare specificamente il numero di porta utilizzando l'opzione -P.
- -p: Questa opzione viene utilizzata per conservare i permessi dei file, le modifiche e i tempi di accesso durante la copia.
- -q: Questa opzione eseguirà il comando SCP in modalità silenziosa. Disattiverà l'indicatore di avanzamento e non mostrerà l'avanzamento del trasferimento, gli avvisi oi messaggi diagnostici di ssh sullo schermo del terminale Linux.
- -r: L'opzione -r viene utilizzata per copiare i file e le directory in modo ricorsivo. Per esempio, se vuoi copiare l'intera cartella (insieme ai contenuti all'interno della cartella) su una macchina di destinazione, devi usare l'opzione -r.
- -S : Questa opzione viene utilizzata per specificare il programma da utilizzare per la connessione.
- -v: v sta per verbose. Questa opzione mostrerà il progresso passo dopo passo dell'esecuzione del comando SCP sullo schermo del terminale. È davvero utile per il debug.
Esempi di comandi SCP
Facci capire come usare SCP Command con l'aiuto di esempi:
Esempio 1: per la copia da locale a remoto host
scp -v lockfile.txt kaushapx@10.172.80.167: /home/cpf657/kaushapx/test1
Nell'esempio sopra,
come scrivere casi di test in Excel
- L'opzione -v è usata come opzione dettagliata per vedere i dettagli dell'output di questo comando sul terminale Linux. Utilizzando l'output dettagliato, puoi sapere esattamente cosa sta succedendo in background quando il comando viene eseguito. Questo aiuta il debug.
- Lockfile.txt è il nome del file di origine che vogliamo trasferire a un host remoto.
- Kaushapx è un esempio di nome utente. Utilizzando questo account nome utente, copieremo in modo sicuro il file sull'host remoto.
- 10.172.80.167 è l'esempio dell'IP dell'host remoto di destinazione su cui vogliamo trasferire il file.
- / home / cpf657 / kaushapx / test1 è un esempio di un percorso assoluto in cui vogliamo mettere questo file trasferito.
Le schermate seguenti mostrano l'esecuzione del comando SCP sopra.
Esempio 2: per copiare dall'host remoto al sistema locale:
scp kaushapx@10.172.80.167:/home/cpf657/kaushapx/test/parent/directory1/DemoFile.txt /home/tpf655/kaushapx
Esempio 3: per copiare più file su un host remoto:
scp DemoFile.txt log.xml kaushapx@10.172.80.167:/home/cpf657/kaushapx/test
Esempio 4: per copiare file su due sistemi remoti:
scp kaushapx@10.172.80.167:/home/cpf657/kaushapx/console.txt kaushapx@10.182.46.76:/home/tpf655/kaushapx/test
Esempio 5: per copiare file e directory in modo ricorsivo (utilizzando l'opzione -r):
Supponiamo che io abbia una cartella chiamata 'test' in localhost e questa cartella contenga quattro file. Voglio copiare l'intera cartella all'interno di un'altra cartella chiamata 'test1' presente su un host remoto.
Userò il seguente comando:
scp -r test kaushapx@10.172.80.167:/home/cpf657/kaushapx/test1
Esempio 6: per aumentare la velocità di copia abilitando la compressione (usando l'opzione -C):
Trasferiamo la stessa cartella che abbiamo fatto nell'esempio 5, ma questa volta abilitando la compressione:
scp -r -C test kaushapx@10.172.80.167:/home/cpf657/kaushapx/test1
Esempio 7: per limitare la larghezza di banda durante la copia (utilizzando l'opzione -l):
come estrarre file 7z su mac
Continuiamo con la stessa opzione. Questa volta useremo l'opzione -l e specificheremo la larghezza di banda, diciamo 500. Ricorda, la larghezza di banda che abbiamo inserito qui è in Kbit / s.
Esempio 8: per specificare una porta ssh diversa durante la copia (utilizzando l'opzione -P):
Se il server remoto su cui si sta copiando il file utilizza una porta diversa dalla porta predefinita 22, è necessario indicare esplicitamente il numero di porta nel comando SCP utilizzando l'opzione -P. Per esempio, se la porta ssh del server remoto è 2022, menzionerai -P 2022 nel comando SCP.
scp -P 2022 console.txt kaushapx@10.182.46.76:/home/tpf655/kaushapx/test
Esempio 9: per preservare i permessi dei file, le modifiche e i tempi di accesso durante la copia (utilizzando l'opzione -p):
scp -p console.txt kaushapx@10.172.80.167:/home/cpf657/kaushapx/test1
Esempio 10: per copiare file in modalità silenziosa (utilizzando l'opzione -q):
scp -q console.txt kaushapx@10.172.80.167:/home/cpf657/kaushapx/test1
Esempio 11: per identificare i file in SCP durante la copia (utilizzando l'opzione -i):
Nell'esempio precedente, my_private_key.pem è il file di identità o il file della chiave privata.
Esempio 12: per utilizzare un codice diverso durante la copia tramite SCP (utilizzando l'opzione -c):
scp -c 3des-cbc -r test1 kaushapx@10.182.46.76:/home/tpf655/kaushapx/test
FAQ sul comando SCP
In questa sezione, tratteremo alcune domande frequenti sul comando SCP.
D # 1) Cos'è il comando SCP?
Risposta: SCP sta per Secure Copy Protocol. Utilizzando il comando SCP, è possibile eseguire la copia dei file in modo sicuro tra gli host su una rete. Utilizza i meccanismi di SSH per il trasferimento dei dati. Utilizza un'autenticazione basata su chiave o password.
D # 2) Cosa fa SCP in Linux?
Risposta: In Linux, il comando SCP trasferisce i file tra i server in modo sicuro. Potrebbe essere una copia di file tra un server remoto e un host locale o tra due server remoti. SCP è un comando preinstallato in Linux ed è noto per la sua semplicità e sicurezza.
D # 3) Come creiamo i file SCP in Linux?
Risposta: puoi file SCP con la seguente sintassi dei comandi:
scp (options) (username@)(source_host:)file1 (username@)(destination_host:)file2.
Molte opzioni possono essere utilizzate con il comando SCP. Per esempio, -C per compressione, -c per cifratura, -P per porta, -I per chiave privata, -l per limite, -r per copia ricorsiva, ecc.
Q # 4) Come facciamo SCP a file?
Risposta: Puoi SCP un file usando il comando SCP come menzionato in Q # 3.
D # 5) SCP copia o si sposta?
Risposta: Il comando SCP copia i file dall'origine alla destinazione. Quindi, dopo SCP, il file sarà presente in entrambi gli host.
Q # 6) Puoi usare SCP per una directory?
Risposta: Sì, possiamo usare SCP per una directory. È necessario utilizzare l'opzione -r per copiare l'intera directory insieme al suo contenuto.
Di seguito è riportata la sintassi del comando SCP per copiare la directory da un host locale a un host remoto:
scp -r localhost_path_to_directory username@target_server_ip:/path_to_target_directory/
Q # 7) Come utilizziamo SCP per tutti i file in una directory?
Risposta: Per utilizzare SCP su tutti i file in una directory, è necessario aggiungere * con il percorso della directory:
scp -r localhost_path_to_directory/* username@target_server_ip:/path_to_target_directory/
In questo modo, tutti i file all'interno della directory locale verranno copiati nella directory remota.
D # 8) Possiamo usare SCP in Windows?
Risposta: Sì, puoi usare SCP in Windows. Tuttavia, non è pre-scaricato in Windows, a differenza di Linux e Mac, quindi per Windows, è necessario installare il software SCP separatamente.
Puoi scaricare Putty che include SCP per Windows (software chiamato Putty SCP (PSCP), oppure puoi scaricare WinSCP (Windows Secure Copy). Il client PSCP viene eseguito direttamente dal prompt dei comandi di Windows. Esistono anche altri software per l'utilizzo di SCP in Windows .
D # 9) Come utilizziamo SCP per più file?
Risposta: Per copiare più file da localhost a un host remoto utilizzando SCP:
scp file1 file2 UserName@TargetHost:TargetDirectoryPath
Per copiare più file da un host remoto a una directory corrente di localhost utilizzando SCP:
scp UserName@SourceHost:SourceDirectoryPath{file1, file2}
Q # 10) Qual è la differenza tra SCP e SFTP?
Risposta: SCP è il protocollo di copia sicura. SFTP è il protocollo di trasferimento file sicuro. Entrambi usano la porta TCP 22 e funzionano con il meccanismo SSH. Ma differiscono per specifiche e funzioni.
SCP trasferisce solo i dati, mentre SFTP esegue anche l'accesso ai file e le funzioni di gestione dei file, oltre al trasferimento dei file. Con SFTP, puoi eseguire operazioni come elencare directory remote o eliminare file. Ma SCP consente solo la copia di file e directory tra i server.
La velocità di trasferimento dei file in SCP è più veloce di SFTP perché utilizza un algoritmo più efficiente per il trasferimento dei file.
VPN usando criptovalute
In SFTP, puoi riprendere il trasferimento di file interrotto dal client della riga di comando. Ma SCP non ha questa funzione.
SFTP offre un componente GUI ma SCP non lo ha.
D # 11) Cos'è il comando SCP in Windows per copiare in modo sicuro un file?
Risposta: Apri il prompt dei comandi di Windows e dai il comando seguente per copiare in modo sicuro un file da una macchina locale Windows a un server (può essere un server Linux):
pscp filepath userid @ target_server_ip: target_path
Esempio: pscp c: desktop sample.txt userxyz@192.162.x.x: /tmp/foo/sample.txt
Dovresti avere PSCP installato per eseguire questo comando.
D # 12) SCP è sicuro?
Risposta: Sì, SCP è sicuro. Utilizza il meccanismo SSH (Secure Shell Protocol) per il trasferimento dei dati, quindi beneficia della sicurezza offerta da SSH. I dati in transito vengono mantenuti riservati e ne viene assicurata anche l'autenticità.
Conclusione
In questo tutorial, abbiamo visto come utilizzare il comando SCP per copiare in modo sicuro i file tra due host remoti o tra un host locale e un host remoto, senza avviare una sessione FTP o accedere esplicitamente alle macchine remote.
SCP utilizza il meccanismo SSH per copiare i dati e quindi i dati in transito sono crittografati e protetti. Ha bisogno di una password o di una chiave per l'autenticazione. A differenza di RCP (Remote Copy Protocol) o FTP (File Transfer Protocol), SCP crittografa sia il file che le password scambiate tra i sistemi per proteggere eventuali ficcanaso sulla rete.
Lettura consigliata
- Comando Taglia in Unix con esempi
- Comando Trova in Unix: trova file con Unix Trova file (esempi)
- Sintassi dei comandi Cat Unix, opzioni con esempi
- Comando Ls in Unix con esempi
- Argomenti della riga di comando nello script della shell Unix con esempio
- Comando Grep in Unix con semplici esempi
- Manipolazione dei file in Unix: panoramica del file system Unix
- Comando di ordinamento Unix con sintassi, opzioni ed esempi