Il trasferimento di file tra macchine è un'attività operativa molto comune che farai sempre come sviluppatore.
Linux fornisce una serie di utilità per trasferire file. In questo tutorial parleremo di FTP
e SCP
. Molti script automatici implementano anche FTP o SCP per spostare i file.
Cos'è FTP?
FTP è un protocollo di rete utilizzato per lo scambio di file in rete. Utilizza la porta 21. FTP consente di accedere a un sistema remoto per lo scambio di file utilizzando il ftp
comando.
Sintassi FTP
La sintassi FTP è la seguente:
ftp host
Qui, host
può essere il nome host o l'indirizzo IP dell'host remoto.
Comandi FTP
I comandi FTP sono simili ai comandi Linux. Ne discuteremo alcuni.
Comando | Utilizzo |
---|---|
aperto | Apre una connessione remota con un altro computer. |
ottenere | Copia un file dal sistema remoto al sistema locale. |
metti | Copia un file dal sistema locale in una directory sul sistema remoto. |
mget | Trasferisce più file dal sistema remoto alla directory corrente del sistema locale. |
mput | Trasferisce più file dal sistema locale a una directory sul sistema remoto. |
ciao/esci | Si prepara per uscire dall'ambiente FTP. |
chiudi | Termina la connessione FTP. |
ascii | Abilita la modalità di trasferimento file in ASCII |
binario | Abilita la modalità di trasferimento file in binario. |
Come trasferire file tramite FTP
FTP offre due modalità di trasferimento:ASCII e Binary.
- ASCII sta per Codice standard americano per lo scambio di informazioni . Viene utilizzato per trasferire file semplici come file di testo.
- Modalità binaria :la modalità binaria viene utilizzata per trasferire file non di testo come immagini.
La modalità di trasferimento predefinita è ASCII.
Fase 1:connessione a FTP
Nell'esempio seguente, hostA
è l'host remoto. Ti verrà richiesto un nome utente e una password.
$ ftp hostA
Connected to hostA.
220 hostA FTP server ready.
Name (hostA:user): user
331 Password required for user.
Password: password
230 User user logged in.
Remote system type is LINUX.
Una volta che la connessione è riuscita, noterai il ftp>
simbolo all'inizio. Ora possiamo eseguire i comandi FTP.
Fase 2:scegli la modalità di trasferimento file
Puoi scegliere la modalità (binaria o ASCII) a seconda del tipo di file.
ftp> ascii
200 Type set to A.
Fase 3 – Trasferisci file
Usiamo il get
comando per trasferire il file sample.txt
dal server FTP remoto alla macchina locale.
ftp> get sample.txt
200 PORT command successful.
150 Opening ASCII mode data connection for sample.txt (22 bytes).
226 Transfer complete.
local: sample.txt remote: sample.txt
22 bytes received in 0.012 seconds (1.54 Kbytes/s)
Passaggio 4. Termina la sessione
ftp> bye
221-You have transferred 22 bytes in 1 files.
221-Total traffic for this session was 126 bytes in 2 transfers. 221-Thank you for using the FTP service on hostA.
221 Goodbye.
Come trasferire più file tramite FTP
Per trasferire file in blocco, ci sono due comandi:mget
e mput
.
Usi mget
per scaricare i file, mentre usi mput
per caricare i file.
ftp> mget sample_file.1 sample_file.2
ftp> mput sample_file.1 sample_file.2
Tutti i passaggi che abbiamo appena appreso possono essere inseriti in un file eseguibile ed essere pianificati. Puoi trovare il codice per l'automazione qui.
Cos'è SCP?
SCP sta per Copia protetta. Utilizza SSH e la porta 22. I dati trasferiti tramite SCP sono crittografati e gli sniffer non possono accedervi. Questo rende SCP molto sicuro.
Puoi usare SCP per:
- Trasferisci file dalla macchina locale all'host remoto.
- Trasferisci file dall'host remoto alla macchina locale.
Sintassi SCP
Esploriamo la sintassi di SCP.
scp [FLAG] [user@]SOURCE_HOST:]/path/to/file1 [user@]DESTINATION_HOST:]/path/to/file2
[FLAG]
specifica le opzioni che possono essere fornite a SCP. Ecco alcuni dettagli sui flag:
Bandiera | Descrizione |
---|---|
-r | Per copiare le directory in modo ricorsivo. |
-q | Utilizzato per nascondere l'indicatore di avanzamento e qualsiasi altra informazione diversa dagli errori. |
-C | Utilizzato per comprimere i dati durante l'invio a destinazione. |
-P | Specifica la porta SSH di destinazione. |
-p | Preserva i tempi di accesso ai file. |
[user@]SOURCE_HOST
è la macchina di origine.[user@]DESTINATION_HOST:]
è la macchina di destinazione.
Nota :Per trasferire file tramite SCP, le credenziali devono essere note e l'utente deve disporre dei permessi per scrivere .
Come trasferire file dalla macchina locale all'host remoto tramite SCP
Per trasferire file su un host remoto, usa il comando seguente:
scp source_file.txt [email protected]:/path/to/remote/directory
Nel comando sopra, source_file.txt
è il file da copiare. Remote_username
è il nome utente per l'host remoto 10.13.13.11
. Dopo :
viene specificato il percorso di destinazione.
Esempio di output:
[email protected]'s password:
source_file.txt 100% 0 0.0KB/s 00:00
Il file source_file.txt
verrà ora posizionato in /path/to/remote/directory
.
Per copiare le directory, usa -r
flag come mostrato di seguito.
scp -r /local/directory [email protected]:/path/to/remote/directory
Come trasferire file da un host remoto a un computer locale tramite SCP
Per trasferire file da un host remoto a una macchina locale, usa il comando seguente:
scp [email protected]:/remote/source_file.txt /path/to/local/directory
Fai molta attenzione quando trasferisci i file mentre SCP sovrascrive i file già esistenti.
Conclusione
In questo tutorial, hai imparato come trasferire file e directory utilizzando FTP e SCP tramite riga di comando.
Se automatizzati, questi comandi servono a scopi ancora più importanti nel data warehousing, nell'ETL (Extract, Transform, Load), nel reporting, nell'archiviazione e nell'elaborazione di file di massa. Prova questi comandi. Connettiamoci su Twitter.