Mac OS
- Añadir rutas estáticas en MacOS
- Usar una Raspberry Pi 4 para Time Machine
- No se libera espacio en volúmenes APFS
Añadir rutas estáticas en MacOS
En las antiguas versiones de MacOS, las rutas se agregaban al igual que en cualquier distribución de Linux con el route and. Pero desde las últimas versiones de MacOSX, el comando ha cambiado, siendo un subconjunto del comando networksetup
Interfaces
Para ver las interfaces, ejecutaremos
networksetup -listallnetworkservices
An asterisk (*) denotes that a network service is disabled.
Ethernet
Ethernet Manual
Ethernet FIJA
USB 10/100/1000 LAN
VOZ
Thunderbolt Bridge
Wi-Fi
iPhone USB
Aquí vemos una lista de las interfaces de red definidas.
Agregar ruta estática
Para agregar rutas en MacOs debemos teclear el siguiente comando
networksetup -setadditionalroutes <interface> <dest> <mask> <gateway>
Donde <interface> será una de las listadas anteriormente
networksetup -setadditionalroutes Wi-Fi 10.230.0.0 255.255.255.0 10.230.0.2
Comprobar la ruta estática
networksetup -getadditionalroutes <interfaz>
Ejemplo:
networksetup -getadditionalroutes Wi-Fi 08:17:40
10.230.0.0 255.255.255.0 10.230.0.2
Borrar la ruta estática
Teclearemos el comando de setup, pero sin el argumento de la red, sólo el interfaz
networksetup -setadditionalroutes <interface>
Ejemplo:
networksetup -setadditionalroutes Wi-Fi
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
Conectamos con el disco
Debemos de poner nuestro usuario y la contraseña que hemos elegido
Y ya está.
No se libera espacio en volúmenes APFS
APFS y el borrado de archivos
Si está utilizando macOS 10.13+ y el sistema de archivos que usas es APFS, es posible que los archivos que hayas eliminado aún existan dentro de una instantánea de APFS.
Instantáneas APFS
Estas instantáneas APFS son utilizadas por macOS y varias utilidades de copia de seguridad como Time Machine. Muchas de estas instantáneas APFS se eliminarán automáticamente después de aproximadamente una semana o después de que Time Machine envíe la copia de seguridad a la unidad de Time Machine externa.
Esto está muy bien, excepto en ele caso de discos externos, de los que no se hace copia en Time Machine.
¿Que hacer si necesitas liberar espacio?
En este caso tendremos que tirar de un comando de Mac OSX llamado tmutil
tmutil
el comando tmutil nos permite comprobar las instantáneas de disco almacenadas. La sintaxis es:
tmutil listlocalsnapshots [Volumen] o punto de montaje
tmutil listlocalsnapshots /Volumes/Datos/
Snapshots for disk /Volumes/Datos/:
com.apple.Timemachine.36902823-2587-45DA-B8AC-F2928BF17D1F.2022-08-03-170508
com.apple.Timemachine.631798C6-FA8C-4BB2-806B-69EB184878AE.2023-07-15-104837
com.apple.Timemachine.DCA013CF-D2C9-49BA-A536-28335B673E16.2023-07-16-144325
com.bombich.ccc.F0E3A50D-07C7-4C86-8270-D9E7C77804A6.2022-07-25-183548
com.bombich.ccc.F6694D63-948A-4E75-8054-DC45356697A8.2023-07-16-144503
En el ejemplo vemos tres instantáneas de Time Machine y dos de Carbon Copy
Los comandos han de ejecutarse con sudo
Podemos eliminarlas con el comando
tmutil deletelocalsnapshots nombre-del-snapshot
Ejemplo
Snapshots for disk / :
com. apple.TimeMachine.2023-06-26-110954.local
com. apple.TimeMachine.2023-06-26-121009.local
com. apple.TimeMachine.2023-06-26-131912.local
edu@MacBookProEdu>sudo tmutil deletelocalsnapshots 2023-06-26-110954
Password:
Deleted local snapshot '2023-06-26-110954'
edu@MacBookProEdu>
O bien con el comando
tmutil thinlocalsnapshots mount_point [purge_amount] [urgency]
Como hemos comentado, hay que ejecutarlos con privilegios de superadmin
sudo tmutil thinlocalsnapshots mount_point [purge_amount] [urgency]
Las cantidades de purgado se representan como bytes, por lo que especificar 20 gigabytes de espacio estaría representado por el número:
21474836480
Los niveles de urgencia van del 1 al 4, y la configuración de urgencia predeterminada es 1.
Nivel 4 de Urgencia
Lo más urgente: Cualquier proceso de copia de seguridad actual se detiene y la reducción se realiza de inmediato. La copia de seguridad más grande disponible será la primera que se reduzca, y la reducción se realizará a través de las siguientes copias de seguridad más grandes.
Nivel 1 de Urgencia
Menos urgente: los procesos de copia de seguridad actuales se completarán antes de que comience el proceso de reducción. La copia de seguridad disponible más antigua se reducirá primero, y la reducción continuará a través de las siguientes copias de seguridad más antiguas.