5.5.1.2.2. dar¶
El programa dar, acrónimo de Disk ARchive es un comando equivalente a tar, aunque con importantes ventajas respecto a este:
El acceso al contenido no es secuencial.
La compresión está integrada dentro del propio formato, lo que permite excluir tipos de ficheros de tal compresión (p.e. una imagen JPEG está ya suficientemente comprimida).
Con dar podemos llevar a cabo cuatro acciones distintas:
Crear la copia con -c.
Restaurar la copia con -x.
Consultar el contenido de la copia con -l.
Mezclar copias con -+ (p.e. para obtener una copia completa a partir de una copia completa y su copia diferencial)
dar dispone de muchas opciones por lo que es más apropiado presentar
una tabla resumen de las más frecuentes y algunos ejemplos de uso. Es
importante tener presente que los nombres de las copias serán
nombre.N.dar
, donde «N» es el número de volumen, ya que podemos
indicarle al programa que a la vez que genera la copia la trocee en partes de
un peso determinado (p.e. 650 MiB). Cuando una opción requiera que indiquemos
el nombre de la copia, no debemos indicar ni el nímero de volumen ni la
extensión.
Acción |
Opción |
Descripción |
---|---|---|
- |
-v |
Muestra más información de la operación. |
-ar |
En opciones que permiten patrones (como -X), permite utilizar expresiones reg. en vez de expansiones de la shell. |
|
-l <fichero> |
Lista el contenido del directorio |
|
-c <nombre> |
-z[<algo>][:<nivel>] |
Comprime según el algoritmo (lzo, gzip, bzip2, xz[1]) y el nivel de compresión (1-9) indicados. Si sólo se incluye -z se sobrentiende -zgzip:9. |
-s <TAM> |
Trocea el backup de salida en archivos del
tamaño indicado. Se pueden añadir unidades (K,
M, G, T). Por ejemplo, -s 650M troceará
en ficheros de 650MiB: |
|
-R <dir> |
Directorio del que se realiza el respaldo. |
|
-Z <patron> |
Excluye de la compresión los archivos que cumplan cierto patrón (p.e. -Z "*.gz"). Puede usarse varias veces. |
|
-X <patron> |
Excluye del respaldo los archivos que cumplan cierto patrón (p.e. -X "*.bak"). Puede usarse varias veces. |
|
-P <patron> |
Excluye del respaldo los archivos que cumplan cierto patrón (p.e. -P proc). La ruta es relativa al directorio indicado con -R. Puede incluirse varias veces |
|
-D |
Los directorios excluidos se guardan en la copia como directorios vacias. |
|
-M |
Se excluyen los directorios cuyo contenido no forma parte del sistema de archivos del directorio indicado con -R. |
|
-A <archivo> |
Copia diferencial. Indica el fichero que contiene la copia de referencia. |
|
-x <nombre> |
-R <dir> |
Directorio de restauración del respaldo. |
-w |
Sobrescribe archivos sin preguntar. |
|
-r |
Sobrescribe archivos sólo si son más recientes que los del sistema. |
|
-g <archivo> |
Restaura el archivo (o el directorio). Debe expresarse como ruta relativa a -R. Puede incluirse varias veces. |
|
-I <patron> |
Restaura sólo los ficheros cuyo nombre cumple el patrón. Puede incluirse varias veces. |
|
-f |
Restaura los ficheros sin reproducir la estructura de directorios. |
|
-+ |
-A <archivo> |
Respaldo que se toma como referencia. |
-@ <fichero> |
Respaldo cuyo contenido se añadirá a la referencia. |
|
-ak |
Mantiene la compresión. |
|
-w |
Sobrescribe sin preguntar. |
|
-/ <reglas> |
Establece cuál es la política que se usará para mezclar los respaldos. Es compleja de escribir. Dos posibles son «{~S}[Oo]Pp» y {!~I}[Rr]{~S}[Oo]Pp. La primera recuerda en el fichero resultante cuáles fueron los ficheros borrados (aunque no se restaurarán porque no se conserva su contenido), mientras en la segunda, no. |
Por ejemplo, si quisiéramos hacer una copia completa del sistema raíz, excluyendo sistemas de archivos externos y directorios sin interés:
# dar -c /media/HDexterno/cc0 -R / -D -M \
-P proc -P sys -P 'var/log/*.gz' \
-X "*~" -X ".*~" -X "*.bak" \
-z -Z "*.gz" -Z "xz" -Z "*,bz2"
La copia incremental o diferencial se realiza exactamente igual, pero añadiendo -A para indicar cuál es el respaldo de referencia. Dependiendo de si tomamos siempre como referencia la copia completa o la última copia, planearemos una estrategia diferencial o incremental:
# dar -c /media/HDexterno/cd1 -R / -D -M \
-P proc -P sys -P 'var/log/*.gz' \
-X "*~" -X ".*~" -X "*.bak" \
-z -Z "*.gz" -Z "xz" -Z "*,bz2"
-A /media/HDexterno/cc0
La restauración es sencilla: basta con llevar a cabo ordenadamente la recuperación de los respaldos. Como cada respaldo almacena un catálogo en que se expresa si algún archivo ha desaparecido, los archivos que existieron alguna vez y desaparecieron en algún momento, se eliminarán al restaurar el respaldo del que desaparecieron.
También es bastante sencillo fusionar ficheros de respaldo:
# cd /media/HDexterno ; dar -+ cc1 -A cc0 -@ cd1 -w -/'{~S}[Oo]Pp'
Notas al pie