Backup TimeMachine su RaspberryPi in pochi click


Informatica / venerdì, Gennaio 31st, 2020

Il Backup è quella cosa che andava fatta prima…
Negli anni decine di miei clienti hanno perso foto di famiglia, documenti di lavoro, email importanti solo per aver tralasciato la cosa più importante… il backup!
Gli utenti Mac, di default, trovano preinstallata la funzionalità TimeMachine, un backup molto semplificato dei file che però necessità di particolari accorgimenti, in particolare un server di rete in grado di gestire TimeMachine.
Guarda caso, hai un fantastico RasberryPi li vicino ed è giunto il momento di dargli un nuovo potere, quello di mettere al sicuro i tuoi dati.

Necessario

Partiamo dal necessario, ovviamente un

  • RaspberryPi
  • SD
  • Disco USB alimentato da dedicare al progetto
  • Mezz’oretta di tempo libero

Preparazione

Iniziamo con l’installare Raspbian. Inseriamo la scheda SD nel PC, scarichiamo Etcher e la il file .img di Raspbian, scegli Lite o Full in base alle tue preferenze, io ho testato la guida su RaspberryPi 3 con Raspbian Desktop Stretch.
Avviamo, come amministratore, il programma Etcher e selezioniamo la scheda SD corretta e il file .img appena scaricato, poi premiamo Flash!
La copia dell’immagine impiega un po’ di tempo, in base alla velocità della schedina, e alla versione di Raspbian scelta.
Perfetto, una volta completato avviamo il nostro RaspberryPi ed iniziamo con la configurazione iniziale, partendo dalla connessione alla rete (nel sito troverai guide e discussioni al riguardo).
Prima di tutto è bene, tramite il comando

sudo raspi-config

espandere la partizione e settare tutti i parametri necessari in base alle nostre preferenze.
Una volta connessi alla rete, è necessario aggiornare il tutto, quindi procedi con il comando

sudo apt update; sudo apt-get dist-upgrade ; reboot now

Sistema operativo pronto!

Disco USB

Per evitare confusione, sarebbe meglio partire con un disco senza partizioni, ci sono vari modi per farlo, io per abitudine da windows, avvio diskpart come amministrazione, cerco il disco giusto con

list disk

lo seleziono con

select disk n (dove n è il numero del disco)

lo svuoto con

clean

RaspberryPi ha un piccolo difetto, non è in grado di fornire molta corrente tramite le porte USB, quindi potresti incontrare problemi nel collegare hard disk da 2.5″che non hanno una alimentazione separata.
Su alcuni modelli di RaspberryPi, è necessario aggiungere nel file /boot/config.txt la voce

safe_mode_gpio=4
max_usb_current=1

per avere la massima corrente disponibile sulle porte USB (1200 mA). Questa è sempre da intendersi come corrente totale di tutte le USB disponibili sul vostro RaspberryPi. Se l’hard disk che volete collegare assorbe più corrente, dovrete ricorrere a un alimentatore separato, o a un HUB USB alimentato.

ATTENZIONE: ora bisogna formattare il disco USB! Andranno persi tutti i dati in esso contenuti, quindi fate attenzione ad usare un disco senza dati indispensabili.

Il filesystem è la base su cui poggiano i file. Il filesystem principalmente utilizzato in Windows è NTFS, in Linux EXT4, MAC HFS+.  Mac lavora bene con HFS+, quindi formattiamo in HFS+.

Cerchiamo il disco USB tramite il comando

sudo fdisk -l |grep sd
sudo apt-get install hfsutils hfsprogs

se hai collegato solo la microSD ed il disco, quest’ultimo dovrebbe essere sda.

Nel mio caso

Disk /dev/sda: 14,7 GiB, 15716057088 bytes, 30695424 sectors

Per sicurezza, verifichiamo la dimensione del disco.

Fate un bel respiro e poi formattiamo con

sudo mkfs.hfsplus /dev/sda -v timemachine

dove sda va sostituito con l’identificativo del vostro disco, mentre timemachine è il nome della nuova partizione.

l’output sarà simile a questo

Initialized /dev/sda as a 14988 MB HFS Plus volume

Linux vuole che vengano montate le partizioni in un directory dedicata, per fare questo, creiamone una e assegnamole i permessi:

sudo mkdir /media/tm
sudo chmod -R 777 /media/tm

Una volta creata la directory che fungerà da mount point, troviamo il codice univoco UUID della partizione

ls -lha /dev/disk/by-uuid | grep sd

il quale sarà simile ad

lrwxrwxrwx 1 root root   9 mar  6 19:31 20728a11-1dbf-3ef3-840d-e2049ce95aab -> ../../sda

Quasi pronto! manca solo un dettaglio, bisogna montare la partizione ad ogni avvio.

Per farlo, si usa il file fstab che gestisce il montaggio dei volumi con le relative opzioni.
Apriamo il file con

sudo nano /etc/fstab

ed aggiungiamo alla fine: (ovviamente metti il tuo codice UUID)

UUID=20728a11-1dbf-3ef3-840d-e2049ce95aab /media/tm hfsplus force,rw,user,noauto 0 0

usciamo e salviamo con Ctrl+X.

Adesso riavviamo il RaspberryPi, per verificare che sia andato tutto liscio.

Eseguiamo un test di montaggio

mount /media/tm

e tramite il df potremme verificare i dettagli

df -h | grep sd

io ho usato una chiavetta usb, quindi lo spazio è poco

/dev/sda         15G   17M     15G   1% /media/tm

Netatalk

E’ giunto il momento di configurare il software per Time Machine.

Se lo installassimo tramite apt, avremmo una versione molto vecchia, quindi procediamo col metodo lungo per ottenere l’ultima versione, attualmente la 3.1.12

sudo apt-get install build-essential libevent-dev libssl-dev libgcrypt11-dev libkrb5-dev libpam0g-dev libwrap0-dev libdb-dev libtdb-dev libmariadbclient-dev avahi-daemon libavahi-client-dev libacl1-dev libldap2-dev libcrack2-dev systemtap-sdt-dev libdbus-1-dev libdbus-glib-1-dev libglib2.0-dev libio-socket-inet6-perl tracker libtracker-sparql-1.0-dev libtracker-miner-1.0-dev

poi scarichiamo l’ultima versione, ma attenzione, adatta il numero alla versione attuale

wget https://prdownloads.sourceforge.net/netatalk/netatalk-3.1.12.tar.gz && tar -xf netatalk-3.1.12.tar.gz && cd netatalk-3.1.12

procediamo con la creazione della configurazione

./configure \
        --with-init-style=debian-systemd \
        --without-libevent \
        --without-tdb \
        --with-cracklib \
        --enable-krbV-uam \
        --with-pam-confdir=/etc/pam.d \
        --with-dbus-daemon=/usr/bin/dbus-daemon \
        --with-dbus-sysconf-dir=/etc/dbus-1/system.d \
        --with-tracker-pkgconfig-version=1.0

il successivo

make

nel RaspberryPi 3 ci sono voluti circa 10 minuti per completare l’operazione, il tempo varia in base alla velocità della microSD e processore.

Dopo la pausa caffè, proseguiamo con

sudo make install

ed in fine, verifichiamo il risultato tramite

netatalk -V

il quale ci elencherà un po’ di dettagli del software appena installato.

Configurazione Netatalk

Bene, software installato, ma ancora da configurare, andiamo a modificare il file nsswitch.conf aggiungendo dopo dns, le voci mdns4 mdns , ottenendo

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the glibc-doc-reference' and info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat
gshadow:        files

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4 mdns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Successivamente modifichiamo afp.conf

sudo nano /usr/local/etc/afp.conf

aggiungendo

[Global]
  mimic model = TimeCapsule6,106

[Time Machine]
  path = /media/tm
  time machine = yes

Tutto configurato e pronto all’azione! Avviamo i servizi.

 sudo service avahi-daemon start && sudo service netatalk start

Nessun errore? Fantastico, allora programmiamo il loro avvio con crontab ed un leggero ritardo, per permettere ai dispositivi usb di essere pronti all’avvio.

sudo crontab -e
@reboot sleep 30 && mount /media/tm && sleep 10 && service avahi-daemon start && service netatalk start

Riavviamo il tutto tramite

sudo service avahi-daemon restartsudo service netatalk restart

Configurare Time Machine

Da finder selezioniamo connetti al server, nella voce indirizzo scriviamo afp://ip del raspberry o il nome

nel mio caso

afp://raspberry3test

premendo connetti verranno richieste le credenziali di accesso, che sono identiche a quelli del RaspberryPi, di default utente pi e password raspberry.

Configurando TimeMachine, durante la ricerca della destinazione per il backup, comparirà il nostro RaspberryPi pronto a ricevere i dati.

Finito! O quasi…

Se il tuo RaspberryPi è esposto ad internet, ti consiglio di seguire la guida per la messa in sicurezza presente nel blog.

Riferimenti utili