La herramienta clásica para realizar backups en entornos Unix es desde
hace años dump, que vuelca sistemas de ficheros completos (una
partición o una partición virtual en los sistemas que las soportan, como
Solaris); restore se utiliza para recuperar archivos de
esas copias. Se trata de una utilidad disponible en la mayoría de clones
del sistema operativo8.1, potente (no diremos `sencilla') y
lo más importante: las
copias son completamente compatibles entre Unices, de forma que por ejemplo
podemos restaurar un backup realizado en IRIX en un sistema HP-UX.
Además, como veremos luego, la mayor parte de las versiones de dump
permiten realizar copias
de seguridad sobre máquinas remotas directamente desde línea de órdenes
(en el caso que la variante de nuestro sistema no lo permita, podemos utilizar
rdump/rrestore) sin más que indicar el nombre de máquina
precediendo al dispositivo donde se ha de realizar la copia.
La sintaxis general de la orden dump es
dump opciones argumentos fs
donde `opciones' son las opciones de la copia de seguridad, `argumentos' son los argumentos de dichas opciones, y `fs' es el sistema
de ficheros a salvaguardar. Se trata de una sintaxis algo peculiar: mientras
que lo habitual en Unix es especificar cada argumento a continuación de
la opción adecuada (por ejemplo, `find . -perm 700 -type f' indica un
argumento `700' para la opción `perm' y uno `f' para `type'), en la orden dump primero especificamos toda la lista de
opciones y a continuación todos sus argumentos; no todas las opciones
necesitan un argumento, y además la lista de argumentos tiene que
corresponderse exactamente, en orden y número, con las opciones que los
necesitan (por ejemplo, si `find' tuviera una sintaxis similar, la orden
anterior se habría tecleado como `find . -perm -type 700 f'). AIX
y Linux son los únicos Unices donde la sintaxis de dump (recordemos que en el primero se denomina backup) es la habitual.
Las opciones de `dump' más utilizadas son las que se muestran en la
tabla 7.2; en las páginas man de cada clon de Unix se suelen
incluir recomendaciones sobre parámetros específicos para modelos de
cintas determinados, por lo que como siempre es más que recomendable su
consulta. Fijándonos en la tabla, podemos ver que la opción `u'
actualiza el archivo /etc/dumpdates tras realizar una copia de seguridad
con éxito; es conveniente que este archivo exista antes de utilizar dump
por primera vez (podemos crearlo con la orden touch), ya que si no existe
no se almacenará información sobre las copias de seguridad de cada sistema
de ficheros (información necesaria, por ejemplo, para poder realizar backups progresivos). En este archivo dump - la propia orden lo hace,
el administrador no necesita modificar el archivo a mano...y no debe
hacerlo - registra información de las copias de cada sistema de archivos, su
nivel, y la fecha de realización, de forma que su aspecto puede ser similar
al siguiente:
anita:~# cat /etc/dumpdates
/dev/dsk/c0d0s6 0 Thu Jun 22 05:34:20 CEST 2000
/dev/dsk/c0d0s7 2 Wed Jun 21 02:53:03 CEST 2000
anita:~#
Tabla 7.2:
Opciones de la orden dump
Opción |
Acción realizada |
Argumento |
0-9 |
Nivel de la copia de seguridad |
NO |
u |
Actualiza /etc/dumpdates al finalizar el backup |
NO |
f |
Indica una cinta diferente de la usada por defecto |
SÍ |
b |
Tamaño de bloque |
SÍ |
c |
Indica que la cinta destino es un cartucho |
NO |
W |
Ignora todas las opciones excepto el nivel del backup |
NO |
|
El uso de dump puede ser excesivamente complejo, especialmente en sistemas
antiguos donde es incluso necesario especificar la densidad de la cinta en
bytes por pulgada o su longitud en pies; no obstante, hoy en día la
forma más habitual
de invocar a esta orden es `dump [1-9]ucf cinta fs', es decir, una
copia de seguridad del sistema de ficheros recibido como argumento, de un
determinado nivel y sobre la unidad de cinta especificada. Por ejemplo para
realizar una copia de seguridad completa sobre la unidad de cinta /dev/rmt de la partición lógica /dev/dsk/c0d0s7, en Solaris podemos
utilizar la orden siguiente (podemos ver que nos muestra mucha información
sobre el progreso de nuestra copia de seguridad en cada momento):
anita:~# ufsdump 0cuf /dev/rmt /dev/dsk/c0d0s7
DUMP: Date of this level 0 dump: Thu Jun 22 10:03:28 2000
DUMP: Date of last level 0 dump: the epoch
DUMP: Dumping /dev/dsk/c0d0s7 (/export/home) to /dev/rmt
DUMP: mapping (Pass I) [regular files]
DUMP: mapping (Pass II) [directories]
DUMP: estimated 24523 blocks (118796KB)
DUMP: Writing 63 Kilobyte records
DUMP: dumping (Pass III) [directories]
DUMP: dumping (Pass IV) [regular files]
DUMP: level 0 dump on Thu Jun 22 10:05:31 CEST 2000
DUMP: 24550 blocks (118927KB) on 1 volume
DUMP: DUMP IS DONE
anita:~#
Para realizar copias remotas, como hemos dicho antes, no tenemos más que
anteponer el nombre del sistema donde deseemos realizar el volcado al nombre
del dispositivo donde se va a almacenar, separado de éste por el carácter
`:'; opcionalmente se puede indicar el nombre de usuario en el sistema
remoto, separándolo del nombre de máquina por `@':
anita:~# ufsdump 0cuf toni@luisa:/dev/st0 /dev/dsk/c0d0s7
Si estamos utilizando rdump, hemos de tener definido un nombre de
máquina denominado
`dumphost' en nuestro archivo /etc/hosts, que
será el sistema donde se almacene la copia remota. De cualquier forma (usemos
dump, ufsdump o rdump), el host remoto ha de
considerarnos como una máquina de confianza (a través de /etc/hosts.equiv o .rhosts), con las consideraciones de seguridad que
esto implica.
>Cómo restaurar los backups realizados con dump? Para esta
tarea se utiliza la utilidad restore (ufsrestore en Solaris), capaz
de extraer ficheros individuales, directorios o sistemas de archivos completos.
La sintaxis de esta orden es
restore opciones argumentos archivos
donde `opciones' y `argumentos' tienen una forma similar a
`dump' (es decir, toda la lista de opciones seguida de toda la lista de
argumentos de las mismas, excepto en AIX y Linux, donde la notación es la
habitual), y `archivos' evidentemente representa una
lista de directorios y ficheros para restaurar. En la tabla 7.3
se muestra un resumen de las opciones más utilizadas.
Tabla 7.3:
Opciones de la orden restore
Opción |
Acción realizada |
Argumento |
r |
Restaura la cinta completa |
NO |
f |
Indica el dispositivo o archivo donde está el backup |
SÍ |
i |
Modo interactivo |
NO |
x |
Extrae los archivos y directorios desde el directorio actual |
NO |
t |
Imprime los nombres de los archivos de la cinta |
NO |
|
Por ejemplo, imaginemos que deseamos restaurar varios archivos de un backup guardado en el fichero `backup'; en primer lugar podemos consultar
el contenido de la cinta con una orden como la siguiente (en Linux):
luisa:~# restore -t -f backup>contenido
Level 0 dump of /home on luisa:/dev/hda3
Label: none
luisa:~# cat contenido|more
Dump date: Fri Jun 23 06:01:26 2000
Dumped from: the epoch
2 .
11 ./lost+found
30761 ./lost+found/#30761
30762 ./lost+found/#30762
30763 ./lost+found/#30763
30764 ./lost+found/#30764
30765 ./lost+found/#30765
30766 ./lost+found/#30766
30767 ./lost+found/#30767
4097 ./ftp
8193 ./ftp/bin
8194 ./ftp/bin/compress
8195 ./ftp/bin/cpio
8196 ./ftp/bin/gzip
8197 ./ftp/bin/ls
8198 ./ftp/bin/sh
8199 ./ftp/bin/tar
8200 ./ftp/bin/zcat
12289 ./ftp/etc
12290 ./ftp/etc/group
Broken pipe
luisa:~#
Una vez que conocemos el contenido de la copia de seguridad - y por tanto el
nombre del archivo o archivos a restaurar - podemos extraer el fichero que nos
interese con una orden como
luisa:~# restore -x -f backup ./ftp/bin/tar
You have not read any tapes yet.
Unless you know which volume your file(s) are on you should start
with the last volume and work towards the first.
Specify next volume #: 1
set owner/mode for '.'? [yn] n
luisa:~# ls -l ftp/bin/tar
---x--x--x 1 root root 110668 Mar 21 1999 ftp/bin/tar
luisa:~#
Como podemos ver, la extracción se ha realizado a partir del directorio
de trabajo actual; si quisiéramos extraer archivos en su ubicación original
deberíamos hacerlo desde el directorio adecuado, o, en algunas versiones
de restore, especificar dicho directorio en la línea de órdenes.
Una opción muy interesante ofrecida por restore es la posibilidad de
trabajar en modo interactivo, mediante la opción `i'; en este modo, al
usuario se le ofrece un prompt desde el cual puede, por ejemplo, listar
el contenido de una cinta, cambiar de directorio de trabajo o extraer archivos.
El siguiente ejemplo (también sobre Linux) ilustra esta opción:
luisa:~# restore -i -f backup
restore > help
Available commands are:
ls [arg] - list directory
cd arg - change directory
pwd - print current directory
add [arg] - add `arg' to list of files to be extracted
delete [arg] - delete `arg' from list of files to be extracted
extract - extract requested files
setmodes - set modes of requested directories
quit - immediately exit program
what - list dump header information
verbose - toggle verbose flag (useful with ``ls'')
help or `?' - print this list
If no `arg' is supplied, the current directory is used
restore > ls
.:
ftp/ httpd/ httpsd/ lost+found/ samba/ toni/
restore > add httpd
restore > extract
You have not read any tapes yet.
Unless you know which volume your file(s) are on you should start
with the last volume and work towards the first.
Specify next volume #: 1
set owner/mode for '.'? [yn] n
restore > quit
luisa:~#
Como podemos ver, hemos consultado el contenido de la copia de seguridad,
añadido el directorio httpd/ a la lista de ficheros a extraer
(inicialmente vacia), y extraído dicho directorio a partir del actual.
Este uso de restore proporciona una gran comodidad y facilidad de uso, ya
que las órdenes en modo interactivo son muy sencillas.
© 2002 Antonio Villalón Huerta