Cookie

Copiare file fra due NAS remoti tramite FTP

Pubblicato da TheJoe il

Tempo di lettura stimato: 3 minuti

Attenzione


Questo articolo è stato pubblicato più di un anno fa, potrebbero esserci stati sviluppi.
Ti preghiamo di tenerne conto.

Il caso di oggi è molto di nicchia e non sono sicuro che siano molti gli utenti che necessitino di una mini-guida come quella di oggi. Però questo mi è capitato e ora ve lo racconto.

Ho di recente acquistato un vecchio Microserver Proliant HP N40L, sul quale ho installato openmediavault, una distribuzione basata su Debian che permette di gestire il sistema esattamente come un classico sistema Linux headless, e di configurare in modo semplice le risorse condivise (SMB/CIFS, NFS, FTP, SSH), Docker, oltre i backup, le routine di cron… e molto altro ancora.

Ora devo migrare i dati dal vecchio NAS a questo.

Purtroppo il vecchio NAS è un pezzo di elettronica senza grandi prestazioni. C’è spazio per un disco, una elementare gestione delle condivisioni SMB, e FTP, un server DLNA e un gestore bittorrent che non sono mai riuscito a far funzionare. Il sistema formatta il disco con un filesystem tutto suo del quale non ho trovato informazioni online e anche inserendo il vecchio disco in uno degli alloggiamenti sul server HP il disco viene riconosciuto, ma il filesystem non viene interpretato.

Quindi, copierò i dati tra i due dispositivi collegati in rete, anche se il vecchio NAS non ha una porta gigabit.

Al microserver HP mi posso collegare con qualunque protocollo, credo che userò SSH, ma al vecchio NAS posso collegarmi solo con SMB o FTP… non sono particolarmente entusiasta, ma mi adeguerò.

Inizio a connettermi al server:

joe@joe-toshiba:$ ssh -t root@192.168.5.10
The authenticity of host 'server_addr (192.168.5.10)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.5.10' (ECDSA) to the list of known hosts.
root@server_addr's password: 
Linux nas 5.19.0-0.deb11.2-amd64 #1 SMP PREEMPT_DYNAMIC Debian 5.19.11-1~bpo11+1 (2022-10-03) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Nov 27 02:46:35 2022 from 192.168.5.201
root@nas:~#

Da qui dovrò posizionarmi in una directory interna a uno dei dischi contenenti i dati. OMV monta i dischi in una directory chiamata /srv/. Io ho già installato e configurato mergerfs, un programma che permette a due dischi con due contenuti diversi di “unirsi” in una unica risorsa. Magari ne parleremo in un altro articolo.

root@nas:~# cd /srv/mergerfs/Public/nas/

A questo punto so già di voler copiare la directory “Public” dal vecchio NAS e tutto il suo contenuto. Dovrò lanciare un comando FTP che mi connetta e inizi la copia di tutti i dati in background. Non voglio dover tenere acceso il portatile per tutta la durata dell’operazione solo per non interrompere il processo lanciato.

Guarda qui:  Usare il file ".htaccess" per bloccare gli accessi

Il comando più semplice che possa lanciare è il sempreverde wget.

# wget -rb ftp://joe:My5ecreTp4ssword@192.168.5.2/Public/

L’opzione -r permette di riprendere il download di un file di grandi dimensioni troncato (anche accidentalmente) da dove il download è stato interrotto. Mentre con -b metto il processo in background.

In questo modo però la mia password rimarrebbe in chiaro nella cronologia del terminale (se decidessi di non cancellare la cronologia). E rimarrebbe in chiaro anche fra i processi del server (ps, top, htop…):

# ps ax | grep wget
271089 ? Rs 26:44 wget -rb ftp://joe:My5ecreTp4ssword@192.168.5.2/Public/
274190 pts/2 S+ 0:00 grep wget

Potrei forse creare uno script di una riga che riassuma il comando… ma forse è più semplice creare il file .wgetrc che contenga le credenziali.

## Credentials for the good ol' NAS @ 192.168.5.2
user=joe
password=My5ecreTp4ssword

Una volta salvato il file nella home dell’utente potrò lanciare il download via FTP senza indicare le credenziali.

# wget -rb ftp://192.168.5.2/Public/

Se mi accorgo di aver fatto un errore e di voler arrestare il comando che ora è in background lo posso sempre “killare” alla vecchia maniera. Come abbiamo visto prima “ps ax | grep wget” mostra il processo e il relativo PID, mentre “kill PID_ID” ucciderà il processo (sostituire PID_ID con il vero PID da uccidere).


TheJoe

Mantengo questo blog a livello amatoriale dal 2009. Sono appassionato di grafica, tecnologia, software Open Source. Fra i miei articoli non sarà difficile trovarne circa la musica, ed alcuni di riflessioni personali, ma preferisco indirizzare la linea del blog principalmente verso la tecnologia. Per informazioni contattami.

0 commenti

Lascia un commento

Segnaposto per l'avatar

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

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.