Manualinux
http://www.nvu.com http://www.gimp.org InicioPresentaciónActualizacionesManualesDescargasNoticiasAgradecimientoEnlaces

Entornos GráficosAplicaciones

DesarrolloEmuladoresInternetJuegosMultimediaSistema

Compresores de Archivos - P7zipEditores de Texto - Leafpad

Copias de Seguridad - Disk ARchive




Copias de Seguridad - Disk ARchive




Copyright

Copyright © José Luis Lara Carrascal  2007-2024   http://manualinux.es



Sumario

Introducción
Características
Instalación
Editar el archivo de configuración personal de DAR
Crear un script de copia de seguridad completa del sistema
Crear un script de copia de seguridad diferencial del sistema
Restauración de la copia de seguridad y las diferenciales
Gestionar las copias de seguridad con Dar Manager
Enlaces




Introducción  

En informática existen dos tipos de usuarios: los que se han quedado alguna vez en su vida sin disco duro por avería o corrupción de datos y los que nunca han tenido este tipo de problema. La percepción del peligro siempre va unida a la experiencia personal, el señor que le han atracado tres veces seguidas en una misma semana dirá que los niveles de delincuencia son insoportables, el señor que nunca haya sufrido un atraco seguirá dejando las llaves del coche puestas cuando vaya a por el periódico.

Tengo que reconocer que no soy un fanático de las copias de seguridad, soy de los que piensan que el sitio más seguro sigue siendo el disco duro y que dejando a un lado los problemas puntuales que hayan tenido algunos usuarios, éstos siguen siendo bastante más fiables y duraderos que un CD o un DVD siempre expuestos a las condiciones ambientales y a la manipulación incorrecta por parte de los usuarios.

Incluso voy más lejos y abogo por realizar siempre las copias de seguridad en un segundo disco duro, teniendo en cuenta el considerable descenso en los precios de éstos. Se te puede estropear un disco duro pero es más fácil que te caiga un ladrillo en la cabeza en pleno desierto, que el hecho de quedarse sin los dos discos duros por avería. Por otra parte siempre es mejor hacer copias selectivas de directorios críticos (etc, home, root) que una copia entera del sistema, pero esto es sólo una opinión personal, que cada cual ajuste sus niveles de seguridad sin tener que llegar a caer en la obsesión por hacer copias de seguridad diarias.

Dentro de los programas dedicados a estos menesteres existen dos tipos muy diferenciados: los que se limitan a crear imágenes de las particiones con las consabidas limitaciones que conlleva esto, y los que hacen copias del contenido permitiendo la posibilidad de hacerlo de forma incremental, es decir, a partir de la primera copia creada sólo se añaden los archivos nuevos o modificados reduciendo considerablemente la engorrosa tarea que supone siempre realizar una copia de todos los datos de la partición. Además nos permiten seleccionar los directorios a ser incluidos en la misma.

En este segundo apartado debemos de incluir a Disk ARchive (DAR), programa del que trata este manual. Aunque tiene una interfaz gráfica denominada Kdar (no es compatible con versiones superiores a la 2.4 de Disk ARchive), es recomendable aprenderse las opciones de línea de comandos del mismo. Lo mejor de todo es que contiene documentación traducida al español con ejemplos de cómo realizar una copia de seguridad del sistema, su manejo no es nada complejo y una vez tengamos configurado el comando de respaldo de datos podemos convertirlo en un script de shell y automatizar las copias con sólo la ejecución de un comando o la programación temporal con el comando cron.



Características  

* FILTROS : Podemos excluir los archivos y directorios que no queremos que se incluyan en la copia.  (-I -X -P -g -[-] -am)

* COPIAS DIFERENCIALES : DAR puede realizar copias completas o copias diferenciales en las que sólo se añaden los archivos modificados desde la copia que utilizemos como referencia. (-A)

* COPIAS DIVIDIDAS EN VARIOS ARCHIVOS : En el comando de copia se puede especificar el tamaño del archivo resultante en el caso de que el tamaño final de la copia supere la capacidad de un CD/DVD. Automáticamente se crearán archivos divididos en función del tamaño especificado en dicho comando. (-s -S -p -aSI -abinary)

* CAPTURA DE ESTADO DEL ARBOL DE DIRECTORIOS : DAR puede realizar una captura de estado del árbol de directorios grabando el estado de los inodos de los archivos. El archivo resultante es usado como referencia para hacer las copias diferenciales de los datos del sistema y es mucho más pequeño que una copia completa del sistema entero. (-A +)

* COMPRESION : DAR puede utilizar compresión en la generación del archivo resultante, sólo gzip, bzip2 y lzo están implementados de momento. Por defecto no la usa. (-zgzip) para gzip, (-zbzip2) para bzip2., (-zlzo) para lzo y (-zxz) para xz. El nivel de compresión por defecto es 9, para cambiarlo añadir un número del 1 al 9 al parámetro concreto, ejemplo: (-zbzip2:8)

* ACCESO DIRECTO : Una de las mejores funciones de este programa, podemos extraer un determinado archivo o directorio específico sin necesidad de restaurar toda la copia, incluso si hacemos uso de la compresión. En el caso de que la copia esté dividida en varios archivos, DAR sólo nos pedirá la parte que contenga los archivos o directorios que queremos restaurar.

* ACCESO SECUENCIAL : Lo mismo que el acceso directo, pero indicado para los discos de cinta. (-sequential-read, at)

* ARCHIVOS DISPERSOS : Esta característica evita el desperdicio de espacio en disco a la hora de restaurar las copias de seguridad. (-sparse-file-min-size, ah)

* PRESERVA LOS ENLACES DUROS : Todas las propiedades de los enlaces a puntos de montaje de dispositivos de bloque son guardados en la copia.

* ATRIBUTOS EXTENDIDOS : DAR puede guardar y restaurar todos los atributos extendidos o aquellos que se ajusten a un determinado patrón. (-u -U -am -ae --alter=list-ea)

* COMPROBACION DEL ARCHIVO : DAR puede detectar un archivo corrupto y anular su restauración dentro del contenido de la copia que tengamos pensado restaurar. (-t)

* USO DE TUBERÍAS : Mediante la ejecución de una tubería podemos restaurar una copia local en un ordenador remoto. (-i -o -)

AISLAMIENTO : Este es el nombre del proceso mediante el cual extraemos el catálogo (la lista de archivos) de una copia ya creada a un pequeño archivo que utilizaremos como referencia para realizar la siguiente copia diferencial, sin necesidad de tener que utilizar como referencia la copia entera creada. (-C)

* CAMBIAR EL TAMAÑO DE LAS PARTES DE UNA COPIA : Con el programa dar_xform podemos cambiar el tamaño de las partes que se hayan creado al realizar una copia dividida en un determinado tamaño.

* SOPORTE DE CIFRADO : DAR puede utilizar los algorimos scrambling y bluefish para cifrar el contenido de los datos a respaldar. (-K -J -# -* blowfish)

* COMPRESION SELECTIVA : Podemos utilizar filtros para excluir archivos comprimidos (zip. gzip, mp3, mpeg, bz2, etc.) si vamos a utilizar la opción de compresión para realizar la copia, esto acelera considerablemete el proceso de copia evitando tener que comprimir lo que ya está comprimido. (-Z *.mp3, *.mpg, *.zip)

* DAR MANAGER : dar_manager es el encargado de gestionar las copias diferenciales y con el mismo podremos buscar entre el contenido de éstas.

* RESTAURACION PLANA : Se pueden restaurar todos los archivos excluyendo a los directorios y subdirectorios tomando como referencia siempre el directorio raíz del sistema: / (-f)

* UN SISTEMA DE ARCHIVOS ÚNICO : DAR puede hacer una copia de un directorio de un sistema de archivos aunque en el
mismo existan puntos de montaje que enlacen a otros sistemas de archivos, éstos serán ignorados en la copia a realizar. (-M)

* MEZCLA DE COPIAS : DAR puede mezclar dos copias diferentes en un mismo archivo siempre y cuando las dos estén comprimidas o sin comprimir y utilizen el mismo algoritmo de cifrado, en el caso de que estas opciones se hayan utilizado. (-+ ak)

* EXTRACCION DE ARCHIVOS DE UNA COPIA PARA AÑADIRLOS A OTRA : Se pueden extraer un grupo de archivos de una copia y añadirlos a una nueva cambiando si se desea las opciones de compresión y cifrado. (-+)

Entre paréntesis los parámetros posibles de línea de comandos de la característica determinada para DAR.

Nota: Estas características no incluyen todos los cambios realizados en las versiones 2.4 >> 2.7. La información actualizada de éstas, en este enlace.



Instalación  

Dependencias

Herramientas de Compilación


Entre paréntesis la versión con la que se ha compilado DAR para la elaboración de este documento.

* GCC - (14.1.0) o Clang - (18.1.8)
* Gawk - (5.3.0)
* M4 - (1.4.19)
* Libtool - (2.4.7)
* Make - (4.4.1)
* Automake - (1.16.5)
* Gettext - (0.22.5)
* Autoconf - (2.72)
* Pkg-config - (0.29.2)

Librerías de Desarrollo

* Curl - (8.8.0)
* Libgcrypt - (1.11.0)
* Libgpg-error - (1.50)
* Gpgme - (1.23.2)
* E2fsprog - (1.47.1)
* Libargon2 - (20190702)
* Libbzip2 - (1.0.8)
* Librsync - (2.3.4)
* Libsocket - (1.8)
* Libthreadar - (1.4.0)
* Libzstd - (1.5.6)
* LZ4 - (1.9.4)
* LZO - (2.10)
* XZ Utils - (5.6.2)
* Zlib - (1.3.1)

Aplicaciones

* Doxygen - (1.10.0)
* Groff - (1.23.0)



Descarga

dar-2.7.15.tar.gz

Optimizaciones

$ export {C,CXX}FLAGS='-O3 -march=znver3 -mtune=znver3'

Donde pone znver3 se indica el procesador respectivo de cada sistema seleccionándolo de la siguiente tabla:
Nota informativa sobre las optimizaciones para GCC
* La opción '-march=' establece el procesador mínimo con el que funcionará el programa compilado, la opción '-mtune=' el procesador específico para el que será optimizado. 

* Los valores separados por comas, son equivalentes, es decir, que lo mismo da poner '-march=k8' que '-march=athlon64'.

* En versiones de GCC 3.2 e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
Nota informativa sobre las optimizaciones para Clang
* La opción '-mtune=' está soportada a partir de la versión 3.4 de Clang.

* Los valores de color azul no son compatibles con Clang.

* Las filas con el fondo de color amarillo son valores exclusivos de Clang y, por lo tanto, no son aplicables con GCC.
Valores CPU
Genéricos
Intel
AMD

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
IPA
$ export {C,CXX}FLAGS+=' -fipa-pta'
LTO
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=auto'
En versiones inferiores a GCC 10, sustituir auto por el número de núcleos que tenga nuestro procesador. Si sólo tiene uno, utilizar el parámetro -flto
Clang
Polly
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'
LTO
$ export {C,CXX}FLAGS+=' -flto'
ThinLTO
$ export {C,CXX}FLAGS+=' -flto=thin'
La aplicación de esta optimización es alternativa a la tradicional LTO, a partir de Clang 3.9 y, por lo tanto, no es combinable con la misma.
Unified LTO
LTO >> ThinLTO
$ export {C,CXX}FLAGS+=' -flto -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=thin'
ThinLTO >> LTO
$ export {C,CXX}FLAGS+=' -flto=thin -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=full'
La aplicación de esta optimización es aplicable, a partir de Clang 17, y sólo es combinable con LLD.

Parámetros adicionales

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc14/lib64"
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice.

Establecer el uso de enlazador dinámico para Mold
$ export LDFLAGS+=' -fuse-ld=mold'

Establecer el uso de enlazador dinámico para LLD
Clang
$ export LDFLAGS+=' -fuse-ld=lld'
Optimizaciones complementarias LTO/ThinLTO de LLD
$ export LDFLAGS+=' -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt'
Optimizaciones complementarias LTO de LLD
$ export LDFLAGS+=" -Wl,--lto-partitions=$(expr $(nproc) / 2)"
Optimizaciones complementarias ThinLTO de LLD
$ export LDFLAGS+=" -Wl,--thinlto-jobs=$(expr $(nproc) / 2)"

Establecer la variable de entorno de uso de compilador para Clang
$ export CC=clang CXX=clang++

Extracción y Configuración  Bloc de Notas Información general sobre el uso de los comandos

$ tar zxvf dar-2.7.15.tar.gz
$ cd dar-2.7.15
$ ./configure --prefix=/usr --sysconfdir=/etc \
--libdir=/usr/lib64 --disable-{dar-,}static \
--disable-upx --disable-build-html --disable-python-binding

Explicación de los comandos

--prefix=/usr : Instala el programa en el directorio principal /usr.

--sysconfdir=/etc
: Instala el archivo de configuración en /etc, en lugar de /usr/etc.
--libdir=/usr/lib64 : Instala las librerías en /usr/lib64, en sistemas de 64 bits multiarquitectura. La ubicación y el nombre de este directorio, puede variar en función de la distribución que cada usuario use.

--disable-{dar-,}static : Desactiva la creación del binario ejecutable estático y la librería estática, al requerir, desde la versión 2.6, de un excesivo número de dependencias adicionales indirectas de librerías estáticas, que sólo son requeridas por este paquete concreto.

--disable-upx : Al no instalar el binario ejecutable estático, no es necesaria su compresión con UPX.
 
--disable-build-html : Desactiva la creación e instalación de la documentación en HTML, destinada a programadores.

--disable-python-binding : Desactiva el soporte de Python, al no ser necesario para la ejecución del programa.

Compilación

$ make

Parámetros de compilación opcionales

-j$(nproc) : Establece el número de procesos de compilación en paralelo, en función del número de núcleos e hilos que tenga nuestro procesador, tomando como referencia la información mostrada por el sistema con el comando correspondiente. Si nuestro procesador es mononúcleo de un solo hilo, no añadir esta opción.

Instalación como root

$ su 
# make install-strip
# ldconfig -v

Borrar las locales adicionales instaladas con la utilidad BleachBit

# bleachbit -c system.localizations

Copiar el archivo de configuración del sistema de DAR a nuestro directorio de usuario root

# cp /etc/darrc $HOME/.darrc

Si tenemos pensado realizar copias de seguridad de directorios como usuario normal, también lo podemos copiar a nuestro directorio personal de usuario.

Estadísticas de Compilación e Instalación de DAR

Estadísticas de Compilación e Instalación de DAR
CPU AMD Ryzen 5 5500
MHz 3600 (BoostMax=4457)
RAM 32 GB
Sistema de archivos XFS
Versión del Kernel 6.9.7-ml SMP PREEMPT_DYNAMIC x86_64
Modo de frecuencia de la CPU powersave (balance performance)
Planificador de CPU BMQ
Versión de Glibc 2.39
Enlazador dinámico LLD 18.1.8
Compilador Clang 18.1.8
Parámetros de optimización -03 -march=znver3 -mtune=znver3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto -funified-lto -Wl,--lto=thin -Wl,--thinlto-jobs=6 -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt
Parámetros de compilación -j12
Tiempo de compilación 20"
Archivos instalados 162
Mostrar/Ocultar la lista de archivos instalados
Enlaces simbólicos creados 2
Mostrar/Ocultar la lista de enlaces simbólicos creados
Ocupación de espacio en disco 5,8 MB

Desinstalación como root

1) MODO TRADICIONAL

En el directorio de compilación ejecutamos el siguiente comando:

$ su -c "make uninstall"

2) MODO MANUALINUX  

El principal inconveniente del comando anterior es que tenemos que tener el directorio de compilación en nuestro sistema para poder desinstalar el programa. En algunos casos esto supone muchos megas de espacio en disco. Con el paquete de scripts que pongo a continuación logramos evitar el único inconveniente que tiene la compilación de programas, y es el tema de la desinstalación de los mismos sin la necesidad de tener obligatoriamente una copia de las fuentes compiladas.

dar-2.7.15-scripts.tar.gz

$ su 
# tar zxvf dar-2.7.15-scripts.tar.gz
# cd dar-2.7.15-scripts
# ./Desinstalar_dar-2.7.15

Copia de Seguridad como root

Con este otro script creamos una copia de seguridad de los binarios compilados, recreando la estructura de directorios de los mismos en un directorio de copias de seguridad (copibin) que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de los binarios podemos copiarlo como usuario a nuestro home y borrar el que ha creado el script de respaldo, teniendo en cuenta que si queremos volver a restaurar la copia, tendremos que volver a copiarlo al lugar donde se ha creado.

$ su 
# tar zxvf dar-2.7.15-scripts.tar.gz
# cd dar-2.7.15-scripts
# ./Respaldar_dar-2.7.15

Restaurar la Copia de Seguridad como root

Y con este otro script (que se copia de forma automática cuando creamos la copia de respaldo del programa) restauramos la copia de seguridad como root cuando resulte necesario.

$ su 
# cd /var/copibin/restaurar_copias
# ./Restaurar_dar-2.7.15



Editar el archivo de configuración personal de DAR

En este caso lo de personal siempre es referible al usuario root, que es el que realiza las copias de seguridad del sistema, o de directorios específicos del mismo, incluido el directorio personal del usuario normal. Abrimos con un editor de texto el archivo de configuración que hemos copiado a nuestro directorio de usuario root y añadimos los formatos de archivo que no serán comprimidos y los directorios del sistema cuyo contenido no será incluido en la copia de seguridad, pero que sí serán creados como vacíos cuando se restaure la copia de seguridad. A continuación pongo como ejemplo el mío, con el contenido modificado y reducido a lo básico.

Si queremos omitir el uso de este archivo de configuración desde la línea de comandos, basta añadir el parámetro -N al comando de ejecución de DAR, para que este archivo o el del sistema sean omitidos en el proceso de ejecución del programa. Si queremos utilizar un archivo de configuración alternativo a éste, o utilizar por defecto el del sistema, basta añadir el parámetro -B con la ruta al archivo de configuración específico a utilizar. Esto resulta muy interesante para la realización de copias de seguridad específicas de directorios.

# Formatos de archivo que no serán comprimidos porque ya están comprimidos
# Formatos de vídeo comprimidos.
-Z "*.avi"
-Z "*.cr2"
-Z "*.flv"
-Z "*.jng"
-Z "*.m4v"
-Z "*.mkv"
-Z "*.mov"
-Z "*.mp4*"
-Z "*.mpeg"
-Z "*.mpg"
-Z "*.oga"
-Z "*.swf"
-Z "*.vob"
-Z "*.webm"
-Z "*.wmv"

# Formatos de animación comprimidos
-Z "*.mng"

# Formatos de imagen comprimidos.
-Z "*.bmp"
-Z "*.gif"
-Z "*.ico"
-Z "*.jpe"
-Z "*.jpeg"
-Z "*.jpg"
-Z "*.mmpz"
-Z "*.mpeg"
-Z "*.png"
-Z "*.tif"
-Z "*.tiff"
-Z "*.webp"


# Formatos de audio comprimidos
-Z "*.ac3"
-Z "*.als"
-Z "*.ape"
-Z "*.bonk"
-Z "*.flac"
-Z "*.m4a"
-Z "*.mp2"
-Z "*.mp3"
-Z "*.mpc"
-Z "*.nsf"
-Z "*.ogg"
-Z "*.speex"
-Z "*.spx"
-Z "*.weba"
-Z "*.wv"


# Paquetes de binarios comprimidos
-Z "*.deb"
-Z "*.rpm"
-Z "*.run"
-Z "*.sis"
-Z "*.xpi"
-Z "*.msi"


# Otros datos de compresión
-Z "*.7z"
-Z "*.Z"
-Z "*.bz2"
-Z "*.cab"
-Z "*.gz"
-Z "*.jar"
-Z "*.rar"
-Z "*.tbz"
-Z "*.tbz2"
-Z "*.tgz"
-Z "*.txz"
-Z "*.wsz"
-Z "*.wz"
-Z "*.xz"


# Estos son archivos zip. No todos están comprimidos, pero considerando que pueden llegar
# a ser bastante grandes,probablemente sea más prudente dejar esto sin comentarios.
-Z "*.pk3"
-Z "*.zip"
# Puede obtener una mejor compresión en estos archivos, pero entonces debería
# des/recomprimirlos con un programa real, no con Dar.
-Z "*.lz4"
-Z "*.zoo"


# Otros, en orden alfabético.
-Z "*.Po"
-Z "*.aar"
-Z "*.bx"
-Z "*.chm"
-Z "*.doc"
-Z "*.epub"
-Z "*.f3d"
-Z "*.gpg"
-Z "*.htmlz"
-Z "*.iix"
-Z "*.iso"
-Z "*.jin"
-Z "*.ods"
-Z "*.odt"
-Z "*.ser"
-Z "*.svgz"
-Z "*.swx"
-Z "*.sxi"
-Z "*.whl"
-Z "*.wings"


# Estos son archivos de caché de Blender. La compresión en estos es opcional en blender.
# El algoritmo de compresión de Blender es mejor para comprimirlos que xz o
# cualquier otro programa de compresión que haya probado.
# Comentar sólo si usa archivos de caché de blender sin comprimir.
-Z "*.bphys"

# Archivos de dar
-Z "*.dar"

# Directorios cuyo contenido no será incluido en la copia de seguridad, pero sí serán creados
# cuando ésta se restaure. Básicamente, tenemos que incluir los directorios de puntos de montaje
# y los del sistema que son volátiles, tmp (si está montado con tmpfs), proc, sys y /dev/pts.
# En mi caso pongo el directorio home porque éste lo tengo en una partición diferente.

-P tmp
-P proc
-P sys
-P dev/pts
-P home
-P mnt/mageia
-P mnt/floppy
-P mnt/cdrom
-P mnt/cd-rw
-P mnt/pclinuxos
-P mnt/pendrive
-P mnt/debian
-P mnt/slackware
-P mnt/win_c
-P mnt/win_d
-P mnt/win_e
-P mnt/win_f
-P mnt/win_g
-P mnt/win_h
-P mnt/win_i
-P mnt/win_j
-P mnt/win_k
-P mnt/win_l
-P mnt/win_m
-P mnt/win_n
-P mnt/win_o
-P media/vcd0
-P media/vcd1
-P media/vcd2
-P media/vcd3
-P media/vcd4





Crear un script de copia de seguridad completa del sistema  Bloc de Notas

Primero creamos un script con todo el comando de ejecución completo para evitar tener que teclearlo cada vez que tengamos pensado hacer una copia completa de los datos de nuestro sistema. Abrimos un editor de texto y añadimos lo siguiente, teniendo en cuenta que lo deberemos de adaptar a las necesidades de cada uno, esto es sólo un ejemplo.

#!/bin/sh

dar -v -m 256 -zxz:6 -s 2G -D -R / -c /mnt/win_o/`date +"%d-%m-%G`_datos \
--fsa-scope=none -G $(nproc)

Explicación de los comandos

-v : Muestra más información en el proceso de creación de la copia de seguridad.

-m 256
: Le indicamos el tamaño mínimo a partir del cual los archivos serán comprimidos, en este caso sería 256KB, esto es completamente opcional.

-zxz:6 : Activa lo compresión en formato xz, con un nivel de compresión de 6. El nivel de compresión predefinido es de 9. Tener en cuenta que el aumento del nivel de compresión exige tener un equipo muy potente, ya que también aumenta el nivel de utilización de memoria y cpu, en los procesos de compresión y descompresión de la copia de seguridad. Con este nivel de compresión, 20 GB de datos de una partición XFS de sistema quedan reducidos a 6 GB con DAR.

-s 2G : El tamaño de las partes en el que será dividida la copia si su tamaño supera los 2 GB. Es recomendable siempre que el tamaño de las partes no supere nunca la memoría del sistema (RAM+swap), porque cuando vayamos a extraer la copia de seguridad, si las partes son de gran tamaño, pueden producirse errores en la extracción producidos por falta de recursos de memoria para la misma. Si esto se produjera, tendremos que crear un archivo adicional de memoria swap, por ejemplo 4 GB, para realizar el proceso con una cierta seguridad. Un ejemplo:

$ su
# dd if=/dev/zero of=/root/archivo-swap bs=1024 count=4194304
# mkswap /root/archivo-swap 4194304
# sync
# swapon /root/archivo-swap

Cuando terminemos de extraer la copia de seguridad, desactivamos y borramos el archivo creado.

# swapoff /root/archivo-swap
# rm -f /root/archivo-swap

-D : Crea los directorios vacíos que han sido excluidos de la copia para evitar tener que crearlos a mano en una posible restauración.

-R /: Le indicamos el directorio raíz a partir del cual la copia será restaurada, al ser una copia completa del sistema tenemos que indicar el directorio raíz del mismo: /

-c /mnt/win_o/`date +"%d-%m-%G`_datos : Es el comando de creación de la copia, ésta se creará con la fecha incrustada en el nombre de la copia resultante y en una partición de datos que tengo de Windows.

--fsa-scope=none : Con esta opción desactivamos el guardado de la información de atributos de archivo extendidos, característica que poseen algunos sistemas de archivos, para acelerar la creación de la copia de seguridad.

-G $(nproc) : Activa el procesamiento multihilo, estableciendo el número de procesos en paralelo, en función del número de núcleos e hilos que tenga nuestro procesador, tomando como referencia la información mostrada por el sistema con el comando correspondiente. Si nuestro procesador es mononúcleo de un solo hilo, no añadir esta opción.

Guardamos el archivo con el nombre de respaldar_sistema en el directorio del root y le damos permisos de ejecución y lo ejecutamos,

$ su 
# chmod +x respaldar_sistema
# ./respaldar_sistema


 
Crear un script de copia de seguridad diferencial del sistema  Bloc de Notas

Cuando tengamos nuestra copia completa del sistema las siguientes que hagamos tendrán que ser diferenciales, es decir, sólo se añadirá lo que haya sido modificado desde la última copia. Para esto creamos otro script con el siguiente contenido:

#!/bin/sh

dar -v -m 256 -zxz:6 -y -s 2G -D -R / -c /mnt/win_o/`date +"%d-%m-%G`_datos_dif \
-A /mnt/win_o/30-06-2024_datos --fsa-scope=none -G $(nproc)

Explicación de los comandos

-c /mnt/win_o/`date +"%d-%m-%G`_datos_dif: Creamos la copia diferencial en la misma partición pero renombrándola para saber que es una copia diferencial y no una copia completa.

-A /mnt/win_o/30-06-2024_datos : Le indicamos la ruta a DAR de la copia completa que utilizaremos como referencia para hacer la copia diferencial. Nunca añadir la extensión o el número de la copia, sólo su nombre, es decir, nada de puntos como se puede comprobar en el ejemplo. Si volvieramos a hacer una copia completa del sistema deberemos de cambiar la ruta a la nueva copia creada.

Guardamos el archivo con el nombre de respaldar_sistema_dif en el directorio del root y le damos permisos de ejecución y lo ejecutamos.

$ su 
# chmod +x respaldar_sistema_dif
# ./respaldar_sistema_dif



Restauración de la copia de seguridad y las diferenciales  Bloc de Notas  

Finalmente creamos un script de restauración de la copia utilizando como ejemplo el que viene en la documentación en español.

#!/bin/sh

if [ -n "$3" ]; then
CMD="$1"
INPUT="$2_datos"
FS_ROOT="$3"
$CMD -x "$INPUT" -w -R "$FS_ROOT"
for file in ${INPUT:0:8}*_dif*; do
$CMD -x "${file:0:15}" -w -R "$FS_ROOT"
done
echo "Todo hecho."
else
echo "No hay suficientes parámetros.

Uso: script ruta_dar base_completa_copia directorio

Donde ruta_dar es la ruta al binario dar, base_completa_copia
es la fecha en el formato'YYYY-MM-DD', y directorio es el lugar
donde usted pondra los datos restaurados, normalmente '/' cuando corre como root."
fi

Guardamos el archivo con el nombre de restaurar_sistema en el mismo sitio donde estén las copias de seguridad creadas,

$ su 
# chmod +x restaurar_sistema
# cp restaurar_sistema /mnt/win_o

Cuando queramos ejecutarlo lo hacemos de la siguiente manera:

$ su 
# ./restaurar_sistema /usr/bin/dar 30-06-2024 /

Explicación de los comandos

/usr/bin/dar : Le indicamos la ruta al binario dar.
30-06-2024 : Le indicamos la fecha de la copia que vamos a restaurar, siempre primero la copia completa y luego las diferenciales.
/ : La ruta del directorio raíz donde se restaurará la copia del sistema.

Una vez conozcamos los comandos de DAR, lo más seguro es que esto lo terminemos haciendo de forma manual. Un ejemplo hipotético en el que restauramos una copia de una partición desde nuestra partición principal:

Copia principal
# dar -R /mnt/debian -x /mnt/win_o/30-06-2024_debian -v

1ª copia diferencial
# dar -R /mnt/debian -x /mnt/win_o/30-06-2024_debian_dif1 -v -w

2ª copia diferencial
# dar -R /mnt/debian -x /mnt/win_o/30-06-2024_debian_dif2 -v -w

En la restauración de las copias diferenciales hay que añadir siempre el parámetro -w para que sobreescriba los archivos antiguos. En dicho proceso también serán borrados los archivos que aparecen como no existentes en el índice de archivos (catálogo) que se crea cuando realizamos una copia diferencial. Si la restauración de la copia principal se realiza sobre una partición existente con datos, también tendremos que añadir este parámetro.

Las copias diferenciales solo tienen sentido cuando los datos a respaldar son relativamente mínimos. Si hemos realizado muchos cambios en el sistema y se han actualizado o borrado muchos archivos, lo recomendable, sobre todo por el ahorro de espacio que supone, es realizar un respaldo total de datos.


 
Gestionar las copias de seguridad con Dar Manager  

Con dar_manager podemos gestionar las copias de seguridad que tengamos de nuestro sistema, listar los archivos que contengan y extraer de forma selectiva los que deseemos. Antes que nada creamos una base de datos en el directorio del usuario root.

$ su 
# dar_manager -C ~/mis_copias.dmd

Añadimos las copias completas y diferenciales que tengamos, en este caso sólo añado la principal, esto es sólo un ejemplo

# dar_manager -A /mnt/win_o/30-06-2024_datos -B ~/mis_copias.dmd

Ahora si ejecutamos el siguiente comando nos dirá las copias que hay en la base de datos,

[root@localhost ~]# dar_manager -l -B ~/mis_copias.dmd


dar path        :
dar options     :
database version: 4


archive #   |    path      |    basename
------------+--------------+---------------
        1       /mnt/win_o      30-06-2024_datos

Para saber si tenemos un determinado archivo o directorio en las copias que tengamos en la base de datos ejecutamos el siguiente comando (en este caso le pregunto si contiene el directorio /usr/local):

[root@localhost ~]# dar_manager -f usr/local -B ~/mis_copias.dmd
Archive number |  Data                   | status ||  EA                     | status
---------------+-------------------------+--------++-------------------------+----------
        1       Mon Jan 13 23:28:08 2020  saved                                 absent


Y me indica el número de copia (Archive) y el tiempo de modificación del directorio (Data) que contiene la copia. Si quisiera extraerlo ejecutaría el siguiente comando:

# dar_manager -B ~/mis_copias.dmd -N -e "-R /" -r usr/local

Explicación de los comandos

-N : Este parámetro omite las opciones de DAR que estén almacenadas en la base de datos, y evita que se produzcan errores cuando extraemos los archivos con dar_manager, utilizando un directorio diferente a la raíz desde la cual se ha creado el archivo de copia de seguridad.

-e "-R /" : La opción -e se utiliza para pasarle parámetros de forma directa a DAR, también se puede utilizar la opción -o pero no es funcional con la extracción selectiva de directorios y archivos. Los parámetros tienen que ir siempre entrecomillados con comillas o comillas simples. En este caso la opción a pasarle es -R / que establece el directorio raíz a partir del cual se extraerán los archivos. Si no añadimos esto y no nos encontramos en el directorio raíz principal del sistema, los archivos se extraerán en el directorio en curso en el que nos encontremos en la línea de comandos. Si nos encontramos en el directorio raíz, pues no hay que añadir esta opción.

Si queremos sobreescribir los archivos existentes en el sistema, sin que DAR nos advierta antes, añadimos la opción -w al parámetro anterior, nos quedaría así: -e "-R / -w". Si hemos creado la copia de seguridad, por ejemplo, desde la raíz del directorio home, para respaldar nuestro directorio personal de usuario, la opción sería -e "-R /home -w"

 -r usr/local : Esta opción indica la ruta (siempre sin la barra inicial) al directorio a extraer. Podemos añadir tantas rutas a directorios o archivos como queramos, siempre divididas por un espacio.

Si no queremos extraer los directorios y archivos con dar_manager podemos utilizar DAR de forma directa. Un comando equivalente al anterior sería este:

# dar -R / -x /mnt/win_o/30-06-2024_datos -v -w -g usr/local

El problema de usar DAR de forma directa, es que la extracción selectiva de directorios y archivos requiere siempre de la opción -g delante de cada una de las rutas que deseemos extraer, y el comando se nos puede hacer eterno.

Cuando queramos borrar una copia de seguridad de la base de datos ejecutamos el siguiente comando:

# dar_manager -D 1 -B ~/mis_copias.dmd

1 es el número referenciado de la copia dentro de la base de datos. Por último recordar que si modificamos el tamaño de la partición tendremos que volver a hacer una copia completa de la misma.



Enlaces  


http://dar.linux.free.fr >> La web de DAR.

http://dargui.sourceforge.net >> La web de DarGUI, interfaz gráfica para DAR.

http://kdar.sourceforge.net >> La web de Kdar, interfaz gráfica para DAR.

https://peckto.github.io/gdar >> La web de Gdar, un explorador y extractor de archivos creados por DAR.



Foro Galería Blog


Actualizado el 30-06-2024

Copias de Seguridad - Disk ARchive

Compresores de Archivos - P7zipEditores de Texto - Leafpad