Copyright
Copyright © José
Luis Lara Carrascal 2007-2024
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 |
generic |
Produce un código binario optimizado para la mayor parte de procesadores existentes. Utilizar este valor si no sabemos el nombre del procesador que tenemos en nuestro equipo. Este valor sólo es aplicable en la opción '-mtune=', si utilizamos GCC. Esta opción está disponible a partir de GCC 4.2. |
native |
Produce un código binario optimizado para el procesador que tengamos en nuestro sistema, siendo éste detectado utilizando la instrucción cpuid. Procesadores antiguos pueden no ser detectados utilizando este valor. Esta opción está disponible a partir de GCC 4.2. |
x86-64 |
Procesador genérico con extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 1.9. |
x86-64-v2 |
Procesador genérico con con soporte de instrucciones X86-64 (MMX, SSE, SSE2, LAHFSAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
x86-64-v3 |
Procesador genérico con con soporte de instrucciones X86-64 (MMX, SSE, SSE2, LAHFSAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3, AVX, AVX2, F16C, FMA, LZCNT, MOVBE, XSAVE, XSAVEC, FMA4) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
x86-64-v4 |
Procesador genérico con con soporte de instrucciones X86-64 (MMX, SSE, SSE2, LAHFSAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3, AVX, AVX2, F16C, FMA, LZCNT, MOVBE, XSAVE, XSAVEC, AVX512*, FMA4) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
Intel |
alderlake |
Intel Alderlake con soporte de instrucciones x86-64 (MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI, AVX512BF16, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
arrowlake |
Intel Arrow Lake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD y extensiones 64-bit. Esta opción está disponible a partir de GCC 14. |
arrowlake-s |
Intel Arrow Lake S con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4 y extensiones 64-bit. Esta opción está disponible a partir de GCC 14. |
atom |
Intel Atom con soporte de
instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y extensiones
64-bit. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición bonnell. |
bonnell |
Intel Bonnell con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3 y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
broadwell |
Intel Broadwell con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9 y Clang 3.6. |
cannonlake |
Intel Cannonlake Server con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, UMIP y extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 3.9. |
cascadelake |
Intel Cascadelake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI y extensiones 64-bit. Esta opción está disponible a partir de GCC 9 y Clang 8. |
clearwaterforest |
Intel Clearwater Forest con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, ENQCMD, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4, USER_MSR, PREFETCHI y extensiones 64-bit. Esta opción está disponible a partir de GCC 14 y Clang 18. |
cooperlake |
Intel Cooper Lake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI, AVX512BF16 y extensiones 64-bit. Esta opción está disponible a partir de GCC 10 y Clang 9. |
core2 |
Intel Core2 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.3. |
core-avx2 |
Intel Core (Haswell). Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición haswell. |
core-avx-i |
Intel Core (ivyBridge) con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AES, PCLMUL, FSGSBASE, RDRND, F16C y extensiones 64-bit. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición ivybridge. |
corei7 |
Intel Core i7 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 y SSE4.2 y extensiones 64-bit. Soporta también los procesadores Intel Core i3 e i5. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición nehalem. |
corei7-avx |
Intel Core i7 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AES y PCLMUL y extensiones 64-bit. Soporta también los procesadores Intel Core i3 e i5. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición sandybridge. |
emeraldrapids |
Intel Emerald Rapids. Esta opción está disponible a partir de GCC 13 y Clang 16. |
goldmont |
Intel Goldmont con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE y extensiones 64-bit. Esta opción está disponible a partir de GCC 9 y Clang 5. |
goldmont-plus |
Intel Goldmont Plus con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, UMIP y extensiones 64-bit. Esta opción está disponible a partir de GCC 9 y Clang 7. |
grandridge |
Intel Grand Ridge con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, RAOINT y extensiones 64-bit. Esta opción está disponible a partir de GCC 13 y Clang 16. |
graniterapids |
Intel Grand Ridge con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI, AVX512-FP16, AVX512BF16, AMX-FP16, PREFETCHI y extensiones 64-bit. Esta opción está disponible a partir de GCC 13 y Clang 16. |
graniterapids-d |
Intel Granite Rapids D con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C, AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES, CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES, AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG, WBNOINVD, CLWB, MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI, AVX512FP16, AVX512BF16, AMX-FP16, PREFETCHI, AMX-COMPLEX y extensiones 64-bit. Esta opción está disponible a partir de GCC 14 y Clang 17. |
haswell |
Intel Haswell con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
i386 |
Intel i386.
|
i486 |
Intel i486. |
i586, pentium |
Intel Pentium sin soporte de instrucciones MMX. |
i686 |
Produce un código binario optimizado para la mayor parte de procesadores compatibles con la serie 80686 de Intel. Todos los actuales lo son. |
icelake-client |
Intel Icelake Client con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES y extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 7. |
icelake-server |
Intel Icelake Server con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES, PCONFIG, WBNOINVD y extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 7. |
intel |
Intel Haswell y Silvermont. Este valor sólo es aplicable en la opción '-mtune='. Esta opción está disponible a partir de GCC 4.9. |
ivybridge |
Intel Ivy Bridge con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL, FSGSBASE, RDRND, F16C y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
knl |
Intel Knights Landing con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, AVX512F, AVX512PF, AVX512ER y extensiones 64-bit. Esta opción está disponible a partir de GCC 5 y Clang 3.4. |
knm |
Intel Knights Mill con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, AVX512F, AVX512PF, AVX512ER, AVX512CD, AVX5124VNNIW, AVX5124FMAPS, AVX512VPOPCNTDQ y extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 6. |
lakemont |
Intel Quark Lakemont MCU, basado en el procesador Intel Pentium. Esta opción está disponible a partir de GCC 6 y Clang 3.9. |
lunarlake |
Intel Lunar Lake. Esta opción está disponible a partir de GCC 14 y es equivalente a la opción arrowlake-s. |
meteorlake |
Intel Meteor Lake. Esta opción está disponible a partir de GCC 13 y Clang 16. |
nehalem |
Intel Nehalem con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
nocona |
Versión mejorada de Intel Pentium4 con soporte de instrucciones MMX, SSE, SSE2, SSE3 y extensiones 64-bit. |
pantherlake |
Intel Panther Lake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4, PREFETCHI y extensiones 64-bit. Esta opción está disponible a partir de GCC 14 y Clang 18. |
penryn |
Intel Penryn con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y SSE4.1. |
pentiumpro |
Intel PentiumPro. |
pentium2 |
Intel Pentium2 basado en PentiumPro con soporte de instrucciones MMX. |
pentium3, pentium3m |
Intel Pentium3 basado en PentiumPro con soporte de instrucciones MMX y SSE. |
pentium4, pentium4m |
Intel Pentium4 con soporte de instrucciones MMX, SSE y SSE2. |
pentium-m |
Versión de bajo consumo de Intel Pentium3 con soporte de instrucciones MMX, SSE y SSE2. Utilizado por los portátiles Centrino. |
pentium-mmx |
Intel PentiumMMX basado en Pentium con soporte de instrucciones MMX. |
prescott |
Versión mejorada de Intel Pentium4 con soporte de instrucciones MMX, SSE, SSE2 y SSE3. |
raptorlake |
Intel Raptor Lake. Esta opción está disponible a partir de GCC 13 y Clang 16. |
rocketlake |
Intel Rocket Lake con soporte de instrucciones x86-64 (MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 13. |
sandybridge |
Intel Sandy Bridge con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9 y Clang 3.6. |
sapphirerapids |
Intel Sapphire Rapids con soporte de instrucciones x86-64 (MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI, AVX512BF16, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
silvermont |
Intel Silvermont con soporte de instrucciones MOVBE, MMX, SSE, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMU, RDRND y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9 y Clang 3.6. |
sierraforest |
Intel Sierra Forest con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B, CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL, AVX-VNNI, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD y extensiones 64-bit. Esta opción está disponible a partir de GCC 13 y Clang 16. |
skylake |
Intel Skylake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES y extensiones 64-bit. Esta opción está disponible a partir de GCC 6 y Clang 3.6. |
skylake-avx512 |
Intel Skylake Server con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD y extensiones 64-bit. Esta opción está disponible a partir de GCC 6 y Clang 3.9. |
tigerlake |
Intel Tiger Lake con soporte de instrucciones OVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES, PCONFIG, WBNOINVD, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT y extensiones 64-bit. Esta opción está disponible a partir de GCC 10 y Clang 10. |
tremont |
Intel Tremont con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, UMIP, GFNI-SSE, CLWB, ENCLV y extensiones 64-bit. Esta opción está disponible a partir de GCC 9 y Clang 7. |
westmere |
Intel Westmere con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9. |
yonah |
Procesadores basados en la microarquitectura de Pentium M, con soporte de instrucciones MMX, SSE, SSE2 y SSE3. |
AMD |
amdfam10, barcelona |
Procesadores basados en AMD Family 10h core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, SSE3, SSE4A, 3DNow!, enhanced 3DNow!, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.3. La definición barcelona está disponible a partir de Clang 3.6. |
athlon, athlon-tbird |
AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y SSE prefetch. |
athlon4, athlon-xp, athlon-mp |
Versiones mejoradas de AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y full SSE. |
bdver1 |
Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.7. |
bdver2 |
Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (BMI, TBM, F16C, FMA, LWP, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.7. |
bdver3 |
Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.8 y Clang 3.4. |
bdver4 |
Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (BMI, BMI2, TBM, F16C, FMA, FMA4, FSGSBASE, AVX, AVX2, XOP, LWP, AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.9 y Clang 3.5. |
btver1 |
Procesadores basados en AMD Family 14h core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, SSE3, SSE4A, CX16, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.6. |
btver2 |
Procesadores basados en AMD Family 16h core con soporte de instrucciones x86-64 (MOVBE, F16C, BMI, AVX, PCL_MUL, AES, SSE4.2, SSE4.1, CX16, ABM, SSE4A, SSSE3, SSE3, SSE2, SSE, MMX y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.8. |
geode |
AMD integrado con soporte de instrucciones MMX y 3DNow!. Esta opción está disponible a partir de GCC 4.3. |
k6 |
AMD K6 con soporte de instrucciones MMX. |
k6-2, k6-3 |
Versiones mejoradas de AMD K6 con soporte de instrucciones MMX y 3DNow!. |
k8, opteron, athlon64, athlon-fx |
Procesadores basados en AMD K8 core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, 3DNow!, enhanced 3DNow! y extensiones 64-bit). |
k8-sse3, opteron-sse3, athlon64-sse3 |
Versiones mejoradas de AMD K8 core con soporte de instrucciones SSE3. Esta opción está disponible a partir de GCC 4.3. |
znver1 |
Procesadores basados en AMD Family 17h core con soporte de instrucciones x86-64 (BMI, BMI2, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT y extensiones 64-bit). Esta opción está disponible a partir de GCC 6 y Clang 4. |
znver2 |
Procesadores basados en AMD Family 17h core con soporte de instrucciones x86-64 (BMI, BMI2, ,CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT y extensiones 64-bit). Esta opción está disponible a partir de GCC 9 y Clang 9. |
znver3 |
Procesadores basados en AMD Family 19h core con soporte de instrucciones x86-64 (BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID, WBNOINVD, PKU, VPCLMULQDQ, VAES) y extensiones 64-bit. Esta opción está disponible a partir de GCC 11 y Clang 12. |
znver4 |
Procesadores basados en AMD Family 19h core con soporte de instrucciones x86-64 (BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID, WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD, AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, AVX512VNNI, AVX512BITALG, AVX512VPOPCNTDQ, GFNI) y extensiones 64-bit. Esta opción está disponible a partir de GCC 12.3 y Clang 16. |
znver5 |
Procesadores basados en AMD Family 1ah core con soporte de instrucciones x86-64 (BMI, BMI2, CLWB, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID, WBNOINVD, PKU, VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD, AVX512BW, AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, AVX512VNNI, AVX512BITALG, AVX512VPOPCNTDQ, GFNI, AVXVNNI, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, PREFETCHI) y extensiones 64-bit. Esta opción está disponible a partir de GCC 14. |
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
$ 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
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 |
|
Enlaces simbólicos creados |
2 |
|
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:
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
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
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
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.
|