Maurizio Paglia

Introduzione

Backup delle fotografie – samba

Backup delle fotografie – samba

In un precedente articolo ho trattato il problema del salvataggio 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 potreste 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"%""

Date Invio e dovreste 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 potete anche trovarlo sfogliando il disco esterno dal vostro file manager preferito.

Portatevi sulla cartella radice del vostro router e guardate la barra degli indirizzi del file manager. Troverete 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 imprecato in modo molto creativo 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 2.0 insistevo a passare al comando di montaggio il parametro vers=2.0 mentre – al contrario – la condivisione viene montata senza colpo ferire se utilizzate vers=1.0

La cosa è doppiamente ridicola se pensate 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

Date Invio e troverete il contenuto di HD_Condiviso/documenti all’interno di /home/attila/samba

Tirate 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 vostra cartella di origine contiene files o cartelle da non trasferire potete inserire nel comando un’opzione per escluderli dal trasferimento.

Per comodità create un file di testo contenente una riga per ogni file o cartella che non volete trasferire e indicatelo 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 tornare utili:

  • -u – non agiorna 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 dovete trasferire una grossa quantità di file di piccole dimensioni questa opzione gestirà l’operazione più efficentemente
  • -W – questa opzione trasferirà invece i files per intero (rsync trasferisce in modo predefinito solo i delta)
  • –dry-run – se non vi sentite sicuri del comando da lanciare e non volete rischiare di distruggere il vostro intero filesytem potete utilizzare questa opzione per simulare ciò che il vostro comando andrà a fare.

3 commenti su “Backup delle fotografie – samba

  1. 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

  2. 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 ?

    1. 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

Vuoi lasciare un commento? Ne sarei felice!

%d blogger hanno fatto clic su Mi Piace per questo: