.. _dar: dar *** El `programa dar `_, acrónimo de *Disk ARchive* es un comando equivalente a :ref:`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 :command:`dar` podemos llevar a cabo cuatro acciones distintas: - Crear la copia con :kbd:`-c`. - Restaurar la copia con :kbd:`-x`. - Consultar el contenido de la copia con :kbd:`-l`. - Mezclar copias con :kbd:`-+` (p.e. para obtener una copia completa a partir de una copia completa y su copia diferencial) :command:`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 :file:`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. .. table:: Opciones comunes de dar :class: dar +-------------+----------------------+------------------------------------------------+ | Acción | Opción | Descripción | +=============+======================+================================================+ | \- | -v | Muestra más información de la operación. | | +----------------------+------------------------------------------------+ | | -ar | En opciones que permiten patrones (como | | | | :kbd:`-X`), permite utilizar expresiones reg. | | | | en vez de expansiones de la *shell*. | +-------------+----------------------+------------------------------------------------+ | -l | Lista el contenido del directorio | +-------------+----------------------+------------------------------------------------+ | -c | -z[][:] | Comprime según el algoritmo (lzo, gzip, bzip2, | | | | xz\ [#]_) y el nivel de compresión (1-9) | | | | indicados. Si sólo se incluye :kbd:`-z` se | | | | sobrentiende :kbd:`-zgzip:9`. | | +----------------------+------------------------------------------------+ | | -s | Trocea el backup de salida en archivos del | | | | tamaño indicado. Se pueden añadir unidades (K, | | | | M, G, T). Por ejemplo, :kbd:`-s 650M` troceará | | | | en ficheros de 650MiB: :file:`nombre.1.dar`, | | | | :file:`nombre.2.dar`, etc. | | +----------------------+------------------------------------------------+ | | -R | Directorio del que se realiza el respaldo. | | +----------------------+------------------------------------------------+ | | -Z | Excluye de la compresión los archivos que | | | | cumplan cierto patrón (p.e. :kbd:`-Z "*.gz"`). | | | | Puede usarse varias veces. | | +----------------------+------------------------------------------------+ | | -X | Excluye del respaldo los archivos que cumplan | | | | cierto patrón (p.e. :kbd:`-X "*.bak"`). Puede | | | | usarse varias veces. | | +----------------------+------------------------------------------------+ | | -P | Excluye del respaldo los archivos que cumplan | | | | cierto patrón (p.e. :kbd:`-P proc`). La ruta | | | | es relativa al directorio indicado con | | | | :kbd:`-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 :kbd:`-R`. | | +----------------------+------------------------------------------------+ | | -A | Copia **diferencial**. Indica el fichero que | | | | contiene la copia de referencia. | +-------------+----------------------+------------------------------------------------+ | -x | -R | 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 | Restaura el archivo (o el directorio). Debe | | | | expresarse como ruta relativa a :kbd:`-R`. | | | | Puede incluirse varias veces. | | +----------------------+------------------------------------------------+ | | -I | 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 | Respaldo que se toma como referencia. | | +----------------------+------------------------------------------------+ | | -@ | Respaldo cuyo contenido se añadirá a la | | | | referencia. | | +----------------------+------------------------------------------------+ | | -ak | Mantiene la compresión. | | +----------------------+------------------------------------------------+ | | -w | Sobrescribe sin preguntar. | | +----------------------+------------------------------------------------+ | | -/ | Establece cuál es la política que se usará | | | | para mezclar los respaldos. Es compleja de | | | | escribir. Dos posibles son ":kbd:`{~S}[Oo]Pp`" | | | | y :kbd:`{!~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 :kbd:`-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' .. todo:: `sarab `_ puede usarse para automatizar la política de copias con :command:`dar`. .. rubric:: Notas al pie .. [#] El soporte para :ref:`xz ` sólo `está disponible desde la versión 2.5 `. .. |JPEG| replace:: :abbr:`JPEG (Joint Photographic Experts Group)`