Skip to main content

Usar una Raspberry Pi 4 para Time Machine

En primer lugar actualizaremos

sudo apt-get update && sudo apt-get upgrade
Instalar Samba


Primero instalaremos Samba (para SMB), que es un protocolo de intercambio de archivos de código abierto muy popular que cuenta con el respaldo oficial de Time Machine para realizar copias de seguridad de datos a través de una red. El daemon de Avahi se utiliza para el protocolo mDNS “Bonjour” de Apple para que nuestro servidor Raspberry Pi se detecte automáticamente dentro de la red.

sudo apt-get install samba avahi-daemon
Conecta el disco duro al puerto USB 3.0


Como la Raspberry Pi 4 viene con 2 puertos USB 3.0, podemos conectar un disco duro externo como nuestro espacio en disco para hacer una copia de seguridad de los datos. tendremos velocidades decentes, si también tenemos una conexión por cable de 1 GBit/s con el Pi 4.

Creamos una carpeta para montar el disco
Comprobamos que el disco está conectado
root@raspberrypi:/mnt# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0  1,8T  0 disk
mmcblk0     179:0    0 29,7G  0 disk
├─mmcblk0p1 179:1    0  256M  0 part /boot
└─mmcblk0p2 179:2    0 29,5G  0 part /

Vemos que tenemos un disco en /devsda

Comprobamos el UUID
root@raspberrypi:/mnt# blkid
/dev/mmcblk0p1: LABEL_FATBOOT="boot" LABEL="boot" UUID="5EA1-EC88" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="c90a195c-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="f0702b0a-e54b-4c34-bd2d-6e52a561898c" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="c90a195c-02"
/dev/sda1: UUID="5e5aa2cf-a809-4139-8096-e3647fa4e116" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="cf7da363-01"

Vemos que el UUID es "5e5aa2cf-a809-4139-8096-e3647fa4e116"

En nuestro caso, ya está particionado, si no fuera así

sudo mkfs -t ext4 /dev/sda
Creamos un usuario para el backup
sudo adduser timemachine

Te pedirá que establezcas una contraseña para el usuario recién creado.

Ahora crearemos la contraseña de Samba
sudo smbpasswd -a timemachine
Crear punto de montaje


Para montar el disco duro USB, necesitamos crear una carpeta donde Linux pueda montar nuestro dispositivo.

sudo mkdir /mnt/timemachine
Cambiar permisos


Para permitir que nuestro usuario de respaldo escriba en el dispositivo, necesitaremos asumir la propiedad del punto de montaje:

sudo chown -R timemachine: /mnt/timemachine
Crear montaje

Editaremos el fichero fstab

nano /etc/fstab

Estará aproximadamente así

proc            /proc           proc    defaults          0       0
PARTUUID=c90a195c-01  /boot           vfat    defaults,flush    0       2
PARTUUID=c90a195c-02  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that

Añadimos una linea con el UUID del disco, y el punto de montaje al final del fichero

UUID=5e5aa2cf-a809-4139-8096-e3647fa4e116 /mnt/timemachine      ext4    sync,noexec,nodev,noatime,nodiratime    0       0

El fichero quedará así

proc            /proc           proc    defaults          0       0
PARTUUID=c90a195c-01  /boot           vfat    defaults,flush    0       2
PARTUUID=c90a195c-02  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that
UUID=5e5aa2cf-a809-4139-8096-e3647fa4e116 /mnt/timemachine      ext4    sync,noexec,nodev,noatime,nodiratime    0       0

Los modificadores significan:

sync: todas las escrituras en el disco deben hacerse sincrónicamente.
noexec: no permite la ejecución directa de ningún binario en el sistema de archivos montado, ya que solo se utilizará para el almacenamiento de copia de seguridad.
nodev: no interpreta caracteres ni bloquea dispositivos especiales en el sistema de archivos.
noatime: no almacena tiempos de acceso en este sistema de archivos.
nodirtime: no almacena tiempos de acceso al directorio en este sistema de archivos.
0: ignora este sistema de archivos cuando lo use dump
0: no verifica el fsck al reiniciar.

Salvamos y comprobamos que funciona con un mount -a

mount -a

Si nada falla, tendremos el disco montado en la carpeta /etc/timemachine

root@raspberrypi:/mnt# ls -la /mnt/timemachine/
total 40
drwxr-xr-x  5 timemachine timemachine  4096 ago 10 22:52  .
drwxr-xr-x  3 root        root         4096 ago 12 18:51  ..
drwx------  2 timemachine timemachine 16384 jul 28 19:24  lost+found
Configurar Samba


Edita el archivo de configuración de Samba y agrega lo siguiente al final:

[backups]
    comment = Backups
    path = /mnt/timemachine
    valid users = timemachine
    read only = no
    vfs objects = catia fruit streams_xattr
    fruit:time machine = yes

Comprobamos la configuración de samba

sudo testparm -s
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Weak crypto is allowed
WARNING: some services use vfs_fruit, others don't. Mounting them in conjunction on OS X clients results in undefined behaviour.

Server role: ROLE_STANDALONE

# Global parameters
[global]
	log file = /var/log/samba/log.%m
	logging = file
	map to guest = Bad User
	max log size = 1000
	obey pam restrictions = Yes
	pam password change = Yes
	panic action = /usr/share/samba/panic-action %d
	passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
	passwd program = /usr/bin/passwd %u
	server role = standalone server
	unix password sync = Yes
	usershare allow guests = Yes
	idmap config * : backend = tdb


[homes]
	browseable = No
	comment = Home Directories
	create mask = 0700
	directory mask = 0700
	valid users = %S


[printers]
	browseable = No
	comment = All Printers
	create mask = 0700
	path = /var/spool/samba
	printable = Yes


[print$]
	comment = Printer Drivers
	path = /var/lib/samba/printers


[backups]
	comment = Backups
	path = /mnt/timemachine
	read only = No
	valid users = timemachine
	vfs objects = catia fruit streams_xattr
	fruit:time machine = yes
Reiniciamos Samba
sudo service smbd reload

Y lo habilitamos en el inicio

systemctl enable smdb
Configurar el demonio de Avahi

Para permitir que MacOS detecte automáticamente nuestra nueva Time Machine, necesitaremos configurar Avahi. Para eso edita el siguiente archivo:

sudo nano /etc/avahi/services/samba.service

Y pega este contenido

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
  <name replace-wildcards="yes">%h</name>
  <service>
    <type>_smb._tcp</type>
    <port>445</port>
  </service>
  <service>
    <type>_device-info._tcp</type>
    <port>9</port>
    <txt-record>model=TimeCapsule8,119</txt-record>
  </service>
  <service>
    <type>_adisk._tcp</type>
    <port>9</port>
    <txt-record>dk0=adVN=backups,adVF=0x82</txt-record>
    <txt-record>sys=adVF=0x100</txt-record>
  </service>
</service-group>

Reiniciamos el demonio de Avahi

sudo service avahi-daemon restart
sudo systemctl enable avahi-daemon

Ahora nos conectamos

Vamos a las preferencias de timemachine en el mac

Captura de Pantalla 2022-08-12 a las 19.21.14.png

Conectamos con el disco

Captura de Pantalla 2022-08-12 a las 19.21.24.png


Debemos de poner nuestro usuario y la contraseña que hemos elegido

Captura de Pantalla 2022-08-12 a las 19.21.42.png

Y ya está.