“Time Machine funziona con il tuo Mac e un disco rigido esterno o Time Capsule”, dicono sul sito della Apple. In realtà, da OS X Lion in poi, funziona automaticamente anche con un disco condiviso in rete.

Sì: con quel vecchio PC che hai in cantina, Ubuntu, e un buon hard disk puoi sostituire la costosa Time Capsule con una soluzione fatta in casa. Ma ad una condizione: quella di essere un gran smanettone! ;)

Ma passiamo subito alla pratica: l’idea è di avere un volume LVM da usare per Time Machine. Facciamo finta di avere una macchina di nome server, con un volumegroup LVM di nome vgServer. Tutti i comandi vanno eseguiti con sudo.

Creare un volume LVM con la partizione per Time Machine

Uno dei vantaggi di usare un server Linux con LVM è che lo spazio disponibile si può aumentare a piacimento aggiungendo altri hard disk, restringendo o allargando i volumi esistenti quando lo spazio si è ridotto.

Creiamo ad esempio un nuovo volume di 500Gb di nome timemachine appartenente al volumegroup vgServer con (tutti i comandi devono essere eseguiti come utente root o con sudo

lvcreate -n timemachine -l 500G vgServer

con un file system di tipo ext4:

mke2fs -t ext4 /dev/vgServer/timemachine</code>

Vedi più sotto le istruzioni per ingrandire o restringere qualche partizione.

montare il volume

Ora bisogna fare in modo che la partizione venga montata al boot, aggiungendo questa riga al file /etc/fstab:

/dev/mapper/vgServer-timemachine /srv/timemachine ext4 defaults,user_xattr

In questo esempio lo spazio per Time Machine viene montato in /srv/timemachine, ma naturalmente si può scegliere qualsiasi altra posizione. È importante non scordare l’opzione user_xattr che abilita gli attributi estesi sul filesystem.

Bisogna però anche creare la directory:

mkdir -p /srv/timemachine

Attenzione che se oltre a usare Time Machine si vogliono condividere dei file tra più utenti bisogna creare uno usergroup, chiamiamolo share, assegnare a tutti gli utenti il gruppo e settare il bit “s” sulla directory su cui verrà montato il filesystem:

addgroup share
adduser dan share
chmod g+s /srv/timemachine

Raggiunere il server dal Finder: Avahi

Questa è forse la parte più semplice e che dà le soddisfazioni più immediate. Bonjour è il nome che la Apple ha dato alla sua implementazione del protocollo Zeroconf. Zeroconf è un sistema che permette di rendere visibili le macchine attive sulla rete locale senza dover configurare nulla (il nome in effetti è indovinato).

apt-get install avahi-daemon

Miracolosamente ora da un Mac sulla stessa rete locale della macchina server si può ad esempio usare il comando ssh server.local invece di ssh 192.168.0.1! Viceversa dalla macchina ubuntu server si può raggiungere l’iMac mela con ssh mela.local.

Condividere il disco con i Mac: Netatalk

Per attivare la condivisione dello spazio disco dedicato a Time Machine bisogna infine installare il programma Netatalk. Netatalk è l’equivalente per OS X del il famoso SAMBA, solo moooolto più semplice da far funzionare. :)

Importante: con OS X Lion è necessario installare la versione 2.2 o sucessiva di Netatalk, vedi più sotto se la tua versione di Ubuntu non è aggiornata (come Ubuntu 11.4).

Installiamo il servizio e fermiamolo subito per poterlo configurare.

apt-get install netatalk
service netatalk stop

configurare Netatalk

Netatalk funziona autenticando i gli utenti della macchina su cui gira. Ovvero: per poter accedere al volume timemachine che stiamo preparando su server con il nome utente dan e la password pwd, è necessario che server abbia un utente unix dan/pwd.

La cosa più semplice è avere un utente su server che abbia lo stesso username e password delle macchine OS X dalle quali ti serve di fare il backup. Supponiamo che questo utente sia appunto dan.

Bisogna quindi fare in modo che l’utente dan possa scrivere nella directory /srv/timemachine:

chown dan /srv/timemachine

Poi conviene fare una piccola modifica al file /etc/default/netatalk in modo da non trasferire password in chiaro sulla rete locale, aggiungendo (o modificando) la riga:

AFPD_UAMLIST="-U uams_dhx2.so"

Infine bisogna decidere quali directory condividere. Di default vengono condivise le directory home, noi aggiungeremo questa riga al file /etc/netatalk/AppleVolumes.default:

/srv/timemachine "Time Machine" options:tm

L’opzione tm serve proprio a comunicare a Lion che il volume si può usare per i backup di Time Machine.

Facciamo ora ripartire il servizio:

service netatalk start

Il volume appare quasi immediatamente (non come SAMBA…) su tutti i Mac collegati alla rete! Lo possiamo subito usare per condividere dei file. Per attivare Time Machine bisogna andare nelle preferenze e selezionare il nuovo disco che apparirà nella lista “Seleziona disco…”. Così appena ci si connetterà al volume timemachine con il Finder, Time Machine partirà automaticamente.

Casi particolari: ingrandire o restringere una partizione

Per restringere una partizione ed un volume è preferibile che i filesystem non siano montati. L’ideale è fare boot da un CD Ubuntu. Si dovrà installare lvm con apt-get. Poi basta ricordarsi di restringere prima la partizione e poi il volume. Niente paura: se c’è qualche problema di dimensionamento e2fsck ci avverte! Per restringere il volume di root:

e2fsck -f /dev/mapper/vgServer-root
resize2fs -p /dev/mapper/vgServer-root 400G
lvresize -L400G /dev/vgServer/root
e2fsck /dev/mapper/vgServer-root

dove /dev/mapper/vgServer-root è il nome del filesystem, mentre /dev/vgServer/root quello del volume da restringere.

Se e2fsck dovesse lamentarsi basta restringere la partizione ancora un po’ e riprovare.

Per, invece, ingrandire una partizione di, ad esempio, 100Gb bisogna prima ingrandire il volume che la contiene e poi la partizione stessa:

e2fsck -f /dev/mapper/vgServer-timemachine
lvresize -L+100G /dev/vgServer/timemachine
resize2fs -p /dev/mapper/vgServer-timemachine
e2fsck /dev/mapper/vgServer-timemachine

in questo caso resize2fs ingrandisce automaticamente la partizione alla massima dimensione possibile.

Installare Netatalk 2.2 su Ubuntu 11.4

Ubuntu 11.4 Natty Narval confine la versione 2.0 di Netatalk. La 2.2 la si può però scaricare però dal Personal Package Archive di Stefano Rivera che l’ha compilata per noi.

Bisogna aggiungere un file di nome riverappa.list alla directory /etc/apt/sources.list.d, contenente la seguente riga:

deb http://ppa.launchpad.net/stefanor/ppa/ubuntu natty main

oppure in alternativa aggiungere tale riga alla fina del file /etc/apt/sources.list.

Quindi bisogna eseguire il comando che autorizza l’archivio di Stefano Rivera

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F1CDC70A

ed infine

apt-get update
apt-get install netatalk
apt-get install upgrade

Riferimenti