Backup delle fotografie - samba

Pubblicato da Maurizio il 02/08/2019
Aggiornato il 16/01/2023
Tempo di lettura, circa 5 minuti

blog

In un precedente articolo ho trattato il problema del backup dei nostri preziosi files e ho usato come soluzione un sistema condiviso online e uno shell script che utilizza il comando lftp.

Oggigiorno ci sono sistemi di condivisione dei dati molto semplici che ognuno di noi può ritrovarsi in casa (magari senza neppure saperlo!).

Uno di questi è il classico disco esterno collegato al router ADSL via USB.

Tanti di voi potrebbero non avere un router di proprietà (che sicuramente permette di effettuare un collegamento FTP e, pertanto, rende possibile l’utilizzo di lftp) ma hanno semplicemente un router brandizzato fornito dal gestore della linea telefonica.

Siete passati alla fibra di TIM e vi ritrovate tra le mani questo orrendo scatolotto.

Siete passati alla fibra di TIM e vi ritrovate tra le mani questo orrendo scatolotto

Questi apparecchi sono solitamente piuttosto blindati (per non dire castrati) e non permettono tanti virtuosismi. Quasi nessuno, ad essere sincero, permette un accesso via ssh e tanti neppure via FTP.

Però - dal momento che sono progettati per condividere i contenuti con diversi dispositivi - facilmente tutti adottano il protocollo di condivisione in rete Samba.

Prima di tutto occorrerà avere un disco rigido collegato allo scatolotto e aver configurato quest’ultimo affinchè condivida una o più cartelle con il protocollo Samba (che potresti trovare abbreviato in SMB).

Io utilizzo sempre il mio storico Western Digital da 2 TB alimentato esternamente.

Iniziamo testando la connessione per capire se le condivisioni che abbiamo impostato dal ridicolo menu di configurazione dello scatolotto sono visibili in rete.

Non essendo praticamente configurabile, lo scatolotto dovrebbe permettervi di accedere con il vostro nome utente Linux e nessuna password, quindi:

smbclient -L <IP vostro router> --user <utente e password>

Mettiamo il caso che il nostro router abbia come indirizzo statico 192.168.1.1 e che il nostro nome utente Linux sia attila (e nessuna password), il comando diventa il seguente:

smbclient -L //192.168.1.1 --user="attila"%""

Premi Invio e dovresti vedere qualcosa di simile:

Unable to initialize messaging context
     Sharename       Type      Comment
     ---------       ----      -------
     <HD_Condiviso>
           IPC$            IPC       IPC Service (Modem TIM)
 Reconnecting with SMB1 for workgroup listing.
     Server               Comment
     ---------            -------
     MODEM TIM            Modem TIM
     Workgroup            Master
     ---------            -------
     WORKGROUP            MODEM TIM

Bene! La condivisione Samba funziona! Il disco rigido collegato via USB al router viene condiviso con il nome che qui abbiamo chiamato <HD_condiviso>

Il nome della condivisione puoi facilmente trovarlo anche sfogliando il disco esterno dal tuo file manager preferito.

Portati sulla cartella radice del tuo router e guarda la barra degli indirizzi del file manager. Troverai una stringa simile a questa:

smb://192.168.1.1/HD_Condiviso/

Ora abbiamo tutto ciò che ci serve per effettuare il collegamento vero e proprio.

  • Indirizzo di rete del server Samba (il brutto scatolotto): 192.168.1.1
  • La radice della condivisione: HD_condiviso
  • Il nome utente: attila
  • La password: <nessuna>
  • La/e cartella/e che vogliamo effettivamente montare: ad es. documenti

Decidiamo dove vogliamo montare la nostra condivisione (ad esempio: /home/attila/samba) e il gioco è fatto.

E invece no!

Ho sudato le leggendarie sette camicie per diverse serate cercando di montare la condivisione senza successo.

Perchè?

Perchè sebbene il router TIM dovrebbe avere un firmware che supporta Samba 2.0 qualcosa non funziona come dovrebbe…

Nei parametri del comando mount.cifs (che serve per agganciare una cartella condivisa con Samba) c’è un’opzione chiamata vers (versione) che obbliga il montaggio della condivisione utilizzando una particolare versione del protocollo Samba.

Dato che avevo letto che il router è aggiornato alla versione Samba 2.0 insistevo a passare al comando di montaggio il parametro vers=2.0 mentre - al contrario - la condivisione viene montata senza colpo ferire usando vers=1.0

La cosa è doppiamente ridicola se pensi che la versione 1.0 è quella utilizzata di default dal comando di montaggio ma… a volte sembra di aver a che fare con il paranormale…

In ogni caso componiamo il comando che ci permetterà di montare la nostra condivisione sul filesystem.

sudo mount.cifs //192.168.1.1/HD_Condiviso/documenti /home/attila/samba -o user=attila,pass=,vers=1.0

Premi Invio e troverai il contenuto di HD_Condiviso/documenti all’interno di /home/attila/samba

Puoi tirare un sospiro di sollievo

Ora dobbiamo sincronizzare i dati sul nostro disco rigido con quelli che si trovano sulla cartella condivisa e per fare questo useremo rsync.

rsync è un comando molto potente e veloce per copiare files da un supporto (anche remoto) ad un altro.

Purtroppo - grazie all’orrendo scatolotto - siamo costretti a montare localmente la cartella condivisa per poterci scrivere sopra… se lo scatolotto permettesse un accesso via ssh avremmo potuto usare rsync direttamente per copiare i files dal nostro PC al disco remoto senza bisogno di nient’altro!

Per un utilizzo elementare di rsync potremmo pensare di usare questo comando:

rsync -vaz <cartella_origine> <cartella_destinazione>

Spiego le opzioni:

  • -v - visualizza a schermo diverse informazioni. Utile se volete vedere che cosa sta facendo il vostro comando.
  • -a - utilizza la cosiddetta modalità archivio che è la somma delle opzioni -rlptgoD (digitate man rsync se siete curiosi di sapere che cosa esattamente fa ognuna delle opzioni qui sopra)
  • -z - indica al programma di comprimere i dati prima di inviarli a destinazione a tutto vantaggio dell’occupazione di banda.

Se la tua cartella di origine contiene files o cartelle da non trasferire puoi inserire nel comando un’opzione per escluderli dal trasferimento.

Per comodità crea un file di testo contenente una riga per ogni file o cartella che non vuoi trasferire e indicalo come argomento con l’opzione —exclude-from. Supponiamo di chiamare questo file rsync.exclude.list

Il comando diventerà quindi il seguente:

rsync -vaz --exclude-from rsync.exclude.list <cartella_origine> <cartella_destinazione>

rsync è un comando molto potente quindi è veramente possibile fare un po’ di tutto.

Alcune opzioni che potrebbero tornarti utili:

  • -u - non aggiorna i file che risultano essere più recenti nella cartella di destinazione
  • —delete - cancella i files nella cartella di destinazione che non esistono più nella cartella di origine
  • -S - se devi trasferire una grossa quantità di file di piccole dimensioni questa opzione gestirà l’operazione più efficacemente
  • -W - questa opzione trasferirà invece i files per intero (rsync trasferisce in modo predefinito solo i delta)
  • —dry-run - se non ti senti sicuro del comando da lanciare e non vuoi rischiare di distruggere l’intero filesytem - e non sto scherzando - puoi utilizzare questa opzione per simulare ciò che il tuo comando andrà a fare.

etichette: gestione delle foto



Adolfo

13/08/2019 alle 18:59

Premetto che ho avuto grosse difficoltà a utilizzare le condivisioni e le reti in genere, ho provato ad utilizzare vers=3.0, ma non è cambiato nulla.

Il precedenza avevo dato :

adolfo@adolfo-h8-1010it:~$ smbclient -L //192.168.1.1 ?user=?adolfo?%??
WARNING: The ?syslog? option is deprecated

Sharename Type Comment
??? ?- ??-
usb1_sda1 Disk Disco
IPC$ IPC IPC Service (Gateway)
Reconnecting with SMB1 for workgroup listing.

Server Comment
??? ??-

Workgroup Master
??? ??-

Se non riesco ad utilizzare il tuo script, pazienza, ci stavo provando per curiosità e poi è da poco che mi ero accorto dell’usb sul modem e di conseguenza della possibilità di condividere un HD con 2 computer, cellulare, tablet ecc. .

Ciao

Adolfo

11/08/2019 alle 22:52

Sinceramente non credo di averne bisogno, ma la curiosità mi ha spinto a sperimentare il tuo script: io uso infostrada e ho un modem fibra Zyxel che mi sembra abbastanza simile al tuo. Ho collegato un hd da 1 tera e ho seguito la tua procedura, ma mi sono fermato con il seguente errore:

adolfo@adolfo-h8-1010it:~$ sudo mount.cifs //192.168.1.1/usb1_sda1/documenti /home/adolfo/samba -o user=adolfo,pass=,vers=2.0
mount error(112): Host is down
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

ho provato a mettere vers=1.0 ed ho ottenuto:

adolfo@adolfo-h8-1010it:~$ sudo mount.cifs //192.168.1.1/usb1_sda1/documenti /home/adolfo/samba -o user=adolfo,pass=,vers=1.0
mount error(2): No such file or directory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

Cosa posso fare ?

Maurizio

13/08/2019 alle 08:14

Ciao Adolfo, dovresti fare qualche controllo.

Immagino tu abbia verificato con il comando smbclient -L –user quali sono le risorse condivise e che usb1_sda1 sia il nome (scritto esattamente così) della cartella che tu vuoi condividere.

Detto questo puoi provare ad utilizzare vers=3.0


Puoi lasciare un commento anche tu usando questo form!

Richiesto
Richiesto
Opzionale
Richiesto