Los tres principales programas para respaldos son dump(8), tar(1) y cpio(1).
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.
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.
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:
dump a través de
ssh con RSH
configurada#RSH=/usr/bin/ssh /sbin/dump -0uan -f usuario@maquinaobjetivo.ejemplo.com:/dev/sa0 /usr
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.
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; dofind $f << backup.listdone#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).
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.
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.
“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.
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.
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.
#!/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 << 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 <<EOM
/dev/fd0a / ufs rw 1 1
EOM
#
# create minimum passwd file
#
cat > /mnt/etc/passwd <<EOM
root:*:0:0:Charlie &:/root:/bin/sh
EOM
cat > /mnt/etc/master.passwd <<EOM
root::0:0::0:0:Charlie &:/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."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.
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>.