Tratando de hacer un backup con Rsync de una unidad en EXT3 a un disco duro USB en FAT32 he podido apreciar que en el backup siempre faltan archivos y que Rsync siempre copia de nuevo todo el contenido incluso cuando no ha habido cambios.
La razón de todo esto está relacionada con el formato FAT32. Por un lado en FAT no es posible tener en el mismo directorio dos carpetas con el mismo nombre. Esto tampoco es posible en EXT3 pero al ser esta case sensitive te permite tener una carpeta "pruebas" y otra "PRUEBAS" en el mismo directorio. El resultado al tratar de copiar ambas carpetas al disco FAT32 es que la primera se copia correctamente pero la segunda es excluida de la copia. Optar por nombres distintos en las carpetas es la solución además de una práctica recomendada.
En cuanto a que Rsync siempre hace un volcado completo incluso cuando los archivos no han cambiado, se debe a que en FAT32 para almacenar la fecha en la que se ha modificado un archivo se dispone de una precisión máxima de solo 2 segundos. Esto hace que no coincida la fecha exacta de EXT3 con la fecha aproximada de FAT32, y dado que Rsync se basa en la comparación de estas fechas para determinar si el archivo ha sido modificado o no desde la última copia, decide volver a hacer el backup.
Para estos casos Rsync cuenta con dos soluciones. La primera por medio del parámetro --size-only, con el que solo considerará que deben copiarse de nuevo aquellos archivos que han cambiado su tamaño, pero no su fecha. Y la segunda y más recomendable por medio del parámetro --modify-window=1, que permite especificar un margen de tolerancia entre fechas, en este caso de 1 segundo.
En tal caso quedaría como sigue:
$ rsync -av --modify-window=1 /misDatos /media/discoUSB/
En estos casos se recomienda que el disco duro USB esté en formato EXT3, con lo que no solo no hará falta nada de todo esto sino que además el backup mantendrá intactos los permisos.
En primer lugar necesitamos saber cual es el disco que hemos de formatear, usando el comando df veremos un listado de los discos montados.
$ df S.ficheros Bloques de 1K Usado Dispon Uso% Montado en /dev/sda1 477770292 448053764 5447136 99% / tmpfs 511984 0 511984 0% /lib/init/rw varrun 511984 104 511880 1% /var/run varlock 511984 0 511984 0% /var/lock udev 511984 2768 509216 1% /dev tmpfs 511984 1116 510868 1% /dev/shm lrm 511984 2004 509980 1% /lib/modules/2.6.27-14-generic/volatile /dev/sdc1 1464778368 385243648 1079534720 27% /media/discoUSB
En mi caso el disco duro USB es el último del listado (sdc1) discoUSB.
A continuación lo desmontamos.
$sudo umount /media/discoUSB
Y formateamos en EXT3
$sudo mkfs.ext3 /dev/sdc1 mke2fs 1.41.3 (12-Oct-2008) Etiqueta del sistema de ficheros= Tipo de SO: Linux Tamaño del bloque=4096 (bitácora=2) Tamaño del fragmento=4096 (bitácora=2) 91578368 nodos-i, 366284000 bloques 18314200 bloques (5.00%) reservados para el superusuario Primer bloque de datos=0 Número máximo de bloques del sistema de ficheros=0 11179 bloque de grupos 32768 bloques por grupo, 32768 fragmentos por grupo 8192 nodos-i por grupo Respaldo del superbloque guardado en los bloques: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848 Escribiendo las tablas de nodos-i: hecho Creating journal (32768 blocks): hecho Escribiendo superbloques y la información contable del sistema de ficheros: hecho Este sistema de ficheros se revisará automáticamente cada 33 montajes o 180 días, lo que suceda primero. Utilice tune2fs -c o -i para cambiarlo.
Finalmente personalizamos el nombre del disco, en mi caso lo llamaré "Backup"
sudo e2label /dev/sdc1 Backup
Hay que tener en cuenta que no todos los sistemas operativos pueden trabajar con unidades en EXT2 o 3 por lo que lamentablemente hay veces en que no queda más remedio que hacer uso de los trucos arriba indicados.
15-08-2009