18.11. Bases para respaldos
Anterior | Capítulo 18. Almacenamiento | Siguiente

## 18.11. Bases para respaldos

Los tres principales programas para respaldos son dump(8), tar(1) y cpio(1).

### 18.11.1. Dump y Restore

Los programas UNIX® que se han usado durante muchos años para hacer copias de seguridad son `dump` y `restore`. Operan en las unidades como una colección de bloques de disco, bajo la abstracción de ficheros, los enlaces y directorios creados por el sistema de ficheros. `dump` respalda un sistema de ficheros completo en un dispositivo. No es capaz de respaldar solamente parte de un sistema de ficheros o un árbol de directorios que se extienda por más de un sistema de ficheros. `dump` no escribe ficheros y directorios a cinta, escribe los bloques de datos “crudos” (raw) que conforman los ficheros y directorios.

### Nota:

Si utiliza `dump` en su directorio raíz, no respaldará `/home`, `/usr` ni muchos otros directorios, ya que suelen ser puntos de montaje de otros sistemas de ficheros o enlaces simbólicos hacia dichos sistemas de ficheros.

`dump` tiene peculiaridades que se mantienen desde sus primeros días en la Version 6 de AT&T UNIX (alrededor de 1975). Los parámetros por defecto son los adecuados para cintas de 9 pistas (6250 bpi), pero no para los medios de alta densidad disponibles hoy en día (hasta 62,182 ftpi). Estos valores por defecto deben obviarse en la línea de comandos para aprovechar la capacidad de las unidades de cinta actuales.

También es posible respaldar datos a través de la red a una unidad de cinta conectada a otra computadora con `rdump` y `rrestore`. Ambos programas dependen de rcmd(3) y ruserok(3) para acceder a la unidad de cinta remota. Por consiguiente, el usuario que realiza el respaldo debe estar listado en el fichero `.rhosts` de la computadora remota. Los argumentos para `rdump` y `rrestore` deben ser adecuados para usarse en la computadora remota. Cuando realice un `rdump` desde FreeBSD a una unidad de cinta Exabyte conectada a una Sun llamada `komodo`, use:

`#` `/sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&1`

Advertencia: existen implicaciones de seguridad al permitir autentificación mediante `.rhosts`. Le recomendamos que evalúe la situación cuidadosamente.

También es posible usar `dump` y `restore` de una forma más segura a través de `ssh`.

Ejemplo 18.1. Utilizando `dump` a través de ssh
`#` `/sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \ usuario@maquinaobjetivo.ejemplo.com dd of=/misficherosgrandes/dump-usr-l0.gz`

Uso del método integrado de `dump`, configurando la variable de ambiente `RSH`:

Ejemplo 18.2. Uso de `dump` a través de ssh con `RSH` configurada
`#` `RSH=/usr/bin/ssh /sbin/dump -0uan -f usuario@maquinaobjetivo.ejemplo.com:/dev/sa0 /usr`

### 18.11.2. `tar`

tar(1) también es de la época de la Version 6 de AT&T UNIX (alrededor de 1975). `tar` trabaja en cooperación con el sistema de ficheros; escribe ficheros y directorios a cinta. `tar` no soporta el rango completo de opciones que ofrece cpio(1), pero no requiere el inusual comando de pipeline que utiliza `cpio`.

En FreeBSD 5.3 y posteriores, tiene a su disposición GNU `tar` y el comando por defecto `bsdtar`. La versión GNU puede ser invocada mediante `gtar`. Soporta dispositivos remotos mediante la misma sintaxis que `rdump`. Para hacer un `tar` a una unidad de cinta conectada a una Sun llamada `komodo`, use:

`#` `/usr/bin/gtar cf komodo:/dev/nsa8 . 2>&1`

Puede hacer lo mismo con o con `bsdtar` usando un “pipe” y `rsh` para mandar los datos a una unidad de cinta remota.

`#` `tar cf - . | rsh `nombredemaquina` dd of=`dispositivo-de-cinta` obs=20b`

Si le preocupa la seguridad del proceso de hacer un respaldo a través de una red debe usar `ssh` en lugar de `rsh`.

### 18.11.3. `cpio`

cpio(1) es el programa de intercambio de archivos de cinta para medios magnéticos. `cpio` tiene opciones (entre muchas otras) para realizar intercambio de bytes, escribir un número diferente de formatos de archivo y hacer “pipe” de datos hacia otros programas. Esta última opción hace de `cpio` una elección excelente para medios de instalación. `cpio` no sabe cómo recorrer el árbol de directorios, así que debe facilitarle una lista de directorios a través de `stdin`.

`cpio` no permite respaldos a través de la red. Puede usar un pipe y `rsh` para mandar los datos a una unidad de cinta remota.

`#` `for f in `lista_directorios; do`` `find $f << backup.list` `done` `#` `cpio -v -o --format=newc < backup.list | ssh `usuario`@`máquina` "cat > `dispositivo_de_respaldo`"`

Donde `lista_directorios` es la lista de directorios que desea respaldar, `usuario`@`máquina` es la combinación usuario/nombre de equipo que realizará el respaldo y `dispositivo_de_respaldo` es donde el respaldo se escribirá efectivamente (por ejemplo `/dev/nsa0`).

### 18.11.4. `pax`

pax(1) es la respuesta IEEE/POSIX® a `tar` y `cpio`. A través de los años las diversas versiones de `tar` y `cpio` se han vuelto ligeramente incompatibles, así que en lugar de pelear por hacerlo completamente estándar, POSIX® creó una nueva utilidad de archivado. `pax` trata de leer y escribir muchos de los diversos formatos de `cpio` y `tar`, además de nuevos formatos propios. Su conjunto de comandos se parece más a `cpio` que a `tar`.

### 18.11.5. Amanda

Amanda (Advanced Maryland Network Disk Archiver) es un sistema de respaldos cliente/servidor, en lugar de un solo programa. Un servidor Amanda respaldará a una sola unidad de cinta cualquier cantidad de computadoras que tengan clientes Amanda y una conexión de red al servidor Amanda. Un problema común en sitios con gran cantidad de discos grandes es que la cantidad de tiempo requerida para respaldar los datos directamente a cinta excede la cantidad de tiempo disponible para la tarea. Amanda resuelve este problema. Amanda puede usar un “disco intermedio” para respaldar varios sistemas de ficheros al mismo tiempo. Amanda crea “conjuntos de archivo”, esto es, un grupo de cintas usadas durante un periodo de tiempo para crear respaldos completos de todos los sistemas de ficheros listados en el fichero de configuración de Amanda. El “conjunto de archivo” también contiene respaldos incrementales nocturnos (o diferenciales) de todos los sistemas de ficheros. Para restaurar un sistema de ficheros dañado hace falta el respaldo completo más reciente y los respaldos incrementales.

El fichero de configuración ofrece un control exhaustivo de los respaldos y del tráfico de red que Amanda genera. Amanda usará cualquiera de los programas de respaldo mencionados arriba para escribir los datos a cinta. Puede instalar Amanda como paquete y como port. No forma parte del sistema base.

### 18.11.6. No hacer nada

“No hacer nada” no es un programa, pero es la estrategia de respaldo más extendida. No tiene coste. No hay un calendario de respaldos a seguir. Simplemente hay que decir que no. Si algo le sucediera a sus datos sonría y acostúmbrese a su nueva situación.

Si su tiempo y sus datos valen poco o nada, entonces “no hacer nada” es el programa de respaldo más adecuado para usted. Pero cuidado, UNIX® es una herramienta muy poderosa y puede suceder que dentro de seis meses tenga un montón de ficheros que sean valiosos para usted.

“No hacer nada” es el método correcto de respaldo para `/usr/obj` y otros árboles de directorios que pueden ser fácilmente recreados por su computadora. Un ejemplo son los archivos que forman la versión HTML o PostScript® de este manual. Estos documentos han sido generados desde ficheros SGML. Crear respaldos de los archivos HTML o PostScript® no es necesario dado que los ficheros SGML se respaldan regularmente.

### 18.11.7. ?Cuál es el mejor programa de respaldos?

dump(8). Y no hay más que hablar. Elizabeth D. Zwicky realizó pruebas de estrés a a todos los programas de copia de seguridad aquí expuestos. La elección clarísima para preservar todos sus datos y todas las peculiaridades de sus sistemas de ficheros UNIX® es `dump`. Elizabeth creó sistemas de ficheros conteniendo una gran variedad de condiciones inusuales (y algunos no tan inusuales) y probó cada programa haciendo un respaldo y restaurando esos sistemas de ficheros. Esas peculiaridades incluían: ficheros con y un bloque nulo, ficheros con caracteres extraños en sus nombres, ficheros que no se podían leer ni escribir, dispositivos, ficheros que cambiaban de tamaño durante el respaldo, ficheros que eran creados/borrados durante el respaldo y cosas así. Elizabeth presentó los resultados en LISA V en octubre de 1991. Consulte torture-testing Backup and Archive Programs.

### 18.11.8. Procedimiento de restauración de emergencia

#### 18.11.8.1. Antes del desastre

Solamente existen cuatro pasos que debe realizar en preparación de cualquier desastre que pudiera ocurrir.

Primero, imprima la etiqueta de disco de cada uno de sus discos (`disklabel da0 | lpr`), su tabla de sistemas de ficheros (`/etc/fstab`) y todos los mensajes de arranque, dos copias de cada uno.

Segundo, asegúrese que los disquetes de rescate (`boot.flp` y `fixit.flp`) tienen todos sus dispositivos. La manera más fácil de revisarlo es reiniciar su máquina con el disquete en la unidad y revisar los mensajes de arranque. Si todos sus dispositivos aparecen en la lista y funcionan, pase al tercer paso.

Si ha habido algún problema tiene que crear dos disquetes de arranque personalizados, que deben tener un kernel que pueda montar todos sus discos y acceder a su unidad de cinta. Estos discos deben contener: `fdisk`, `disklabel`, `newfs`, `mount` y cualquier programa de respaldo que utilice. Estos programas deben estar enlazados estáticamente. Si usa `dump`, el disquete debe contener `restore`.

Tercero, use cintas de respaldo regularmente. Cualquier cambio que haga después de su último respaldo puede perderse irremediablemente. Proteja contra escritura las cintas de respaldo.

Cuarto, pruebe los disquetes (ya sea `boot.flp` y `fixit.flp` o los dos discos personalizados que creó en el segundo paso) y las cintas de respaldo. Documente el procedimiento. Almacene estas notas con los discos de arranque, las impresiones y las cintas de respaldo. Estará tan perturbado cuando restaure su sistema que las notas pueden pueden evitar que destruya sus cintas de respaldo. (?Como? en lugar de `tar xvf /dev/sa0`, puede teclear accidentalmente `tar cvf /dev/sa0` y sobreescribir su cinta).

Como medida adicional de seguridad haga discos de inicio y dos cintas de respaldo cada vez. Almacene una de cada en una ubicación remota. Una ubicación remota NO es el sótano del mismo edificio. Muchas firmas alojadas en el World Trade Center aprendieron esta leccón de la manera más difícil. Esa ubicación remota debe estar separada físicamente de sus computadoras y unidades de disco por una distancia significativa.

Ejemplo 18.3. Un “script” para la creación de discos flexibles de arranque
#!/bin/sh # # create a restore floppy # # format the floppy # PATH=/bin:/sbin:/usr/sbin:/usr/bin fdformat -q fd0 if [ $? -ne 0 ] then echo "Bad floppy, please use a new one" exit 1 fi # place boot blocks on the floppy # disklabel -w -B /dev/fd0c fd1440 # # newfs the one and only partition # newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 5 -o space /dev/fd0a # # mount the new floppy # mount /dev/fd0a /mnt # # create required directories # mkdir /mnt/dev mkdir /mnt/bin mkdir /mnt/sbin mkdir /mnt/etc mkdir /mnt/root mkdir /mnt/mnt # for the root partition mkdir /mnt/tmp mkdir /mnt/var # # populate the directories # if [ ! -x /sys/compile/MINI/kernel ] then cat &lt;&lt; EOM The MINI kernel does not exist, please create one. Here is an example config file: # # MINI -- A kernel to get FreeBSD onto a disk. # machine "i386" cpu "I486_CPU" ident MINI maxusers 5 options INET # needed for _tcp _icmpstat _ipstat # _udpstat _tcpstat _udb options FFS #Berkeley Fast File System options FAT_CURSOR #block cursor in syscons or pccons options SCSI_DELAY=15 #Be pessimistic about Joe SCSI device options NCONS=2 #1 virtual consoles options USERCONFIG #Allow user configuration with -c XXX config kernel root on da0 swap on da0 and da1 dumps on da0 device isa0 device pci0 device fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr device fd0 at fdc0 drive 0 device ncr0 device scbus0 device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr device npx0 at isa? port "IO_NPX" irq 13 vector npxintr device da0 device da1 device da2 device sa0 pseudo-device loop # required by INET pseudo-device gzip # Exec gzipped a.out's EOM exit 1 fi cp -f /sys/compile/MINI/kernel /mnt gzip -c -best /sbin/init > /mnt/sbin/init gzip -c -best /sbin/fsck > /mnt/sbin/fsck gzip -c -best /sbin/mount > /mnt/sbin/mount gzip -c -best /sbin/halt > /mnt/sbin/halt gzip -c -best /sbin/restore > /mnt/sbin/restore gzip -c -best /bin/sh > /mnt/bin/sh gzip -c -best /bin/sync > /mnt/bin/sync cp /root/.profile /mnt/root cp -f /dev/MAKEDEV /mnt/dev chmod 755 /mnt/dev/MAKEDEV chmod 500 /mnt/sbin/init chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt chmod 555 /mnt/bin/sh /mnt/bin/sync chmod 6555 /mnt/sbin/restore # # create the devices nodes # cd /mnt/dev ./MAKEDEV std ./MAKEDEV da0 ./MAKEDEV da1 ./MAKEDEV da2 ./MAKEDEV sa0 ./MAKEDEV pty0 cd / # # create minimum file system table # cat > /mnt/etc/fstab &lt;&lt;EOM /dev/fd0a / ufs rw 1 1 EOM # # create minimum passwd file # cat > /mnt/etc/passwd &lt;&lt;EOM root:*:0:0:Charlie &amp;:/root:/bin/sh EOM cat > /mnt/etc/master.passwd &lt;&lt;EOM root::0:0::0:0:Charlie &amp;:/root:/bin/sh EOM chmod 600 /mnt/etc/master.passwd chmod 644 /mnt/etc/passwd /usr/sbin/pwd_mkdb -d/mnt/etc /mnt/etc/master.passwd # # umount the floppy and inform the user # /sbin/umount /mnt echo "The floppy has been unmounted and is now ready."

#### 18.11.8.2. Después del desastre

La pregunta clave es: ?sobrevivió su hardware? Ha estado haciendo respaldos regularmente, así que no hay necesidad de preocuparse por el software.

Si el hardware ha sufrido daños los componentes deben reemplazarse antes de intentar de usar su sistema.

Si su hardware está bien revise sus discos de arranque. Si usa disquetes de arranque personalizados arranque en modo monousuario (teclée `-s` en el en el “prompt” de arranque `boot:`). Sáltese el siguiente párrafo.

Si utiliza usando los discos `boot.flp` y `fixit.flp`, siga leyendo. Inserte el disco `boot.flp` en la primera unidad de disquete y arranque la máquina. El menú de instalación original se desplegará en pantalla. Seleccione la opción `Fixit--Repair mode with CDROM or floppy.`. Inserte el disco `fixit.flp` cuando se le pida. Tanto `restore` como los demás programas que necesitará están en `/mnt2/rescue` (`/mnt2/stand` para versiones de FreeBSD anteriores a 5.2).

Recupere cada sistema de ficheros por separado.

Trate de montar (por ejemplo `mount /dev/da0a /mnt`) la partición raíz de su primer disco. Si la etiqueta del disco ha sufrido daños use `disklabel` para reparticionar y etiquetar el disco de forma que coincida con la etiqueta que imprimió y guardó previamente. Use `newfs` para crear de nuevo sus sistemas de ficheros. Monte de nuevo la partición raíz del disquete en modo lectura/escritura (`mount -u -o rw /mnt`). Ejecute su programa de respaldo y utilice las cintas de respaldo para restaurar sus datos en este sistema de ficheros (`restore vrf /dev/sa0`). Desmonte el sistema de ficheros (`umount /mnt`). Repita el proceso con cada sistema de ficheros que sufrió daños.

Una vez que su sistema esté en marcha respalde sus datos en cintas nuevas. Cualquiera que haya sido la causa de la caída o pérdida de datos puede suceder de nuevo. Una hora más que gaste ahora puede ahorrarle mucho sufrimiento más adelante.

Anterior | Subir | Siguiente
18.10. Respaldos en disquetes | Inicio | 18.12. Sistemas de ficheros en red, memoria y respaldados en fichero

Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista <questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a <doc@FreeBSD.org>.