Administrador de Linux: copia de seguridad y recuperación
Antes de explorar métodos específicos de CentOS para implementar un plan de respaldo estándar, analicemos primero las consideraciones típicas para una política de respaldo de nivel estándar. Lo primero a lo que queremos acostumbrarnos es la3-2-1 backup rule.
3-2-1 Estrategia de respaldo
En toda la industria, a menudo escuchará el término modelo de respaldo 3-2-1. Este es un muy buen enfoque para vivir al implementar un plan de respaldo. 3-2-1 se define de la siguiente manera:3copias de datos; por ejemplo, podemos tener la copia de trabajo; una copia puesta en el servidor CentOS diseñada para redundancia usando rsync; y las copias de seguridad USB rotativas y externas se realizan a partir de los datos del servidor de copia de seguridad.2diferentes medios de respaldo. En realidad, tendríamos tres medios de respaldo diferentes en este caso: la copia de trabajo en un SSD de una computadora portátil o estación de trabajo, los datos del servidor CentOS en una matriz RADI6 y los respaldos externos colocados en unidades USB.1copia de datos fuera del sitio; estamos rotando las unidades USB fuera del sitio todas las noches. Otro enfoque moderno puede ser un proveedor de respaldo en la nube.
Recuperación del sistema
Un plan de restauración bare metal es simplemente un plan diseñado por un administrador de CentOS para poner en línea sistemas vitales con todos los datos intactos. Suponiendo que el 100% de los sistemas fallaran y se perdiera todo el hardware del sistema anterior, un administrador debe tener un plan para lograr el tiempo de actividad con datos de usuario intactos que supongan un tiempo de inactividad mínimo. El kernel monolítico utilizado en Linux en realidad hace que las restauraciones completas utilizando imágenes del sistema sean mucho más fáciles que Windows. Donde Windows usa una arquitectura de micro-kernel.
Una restauración completa de datos y una recuperación completa se logran generalmente a través de una combinación de métodos que incluyen el trabajo, las imágenes de disco de producción configuradas de los servidores operativos clave, las copias de seguridad redundantes de los datos del usuario que cumplen con la regla 3-2-1. Incluso algunos archivos confidenciales que pueden almacenarse en una caja fuerte a prueba de fuego segura con acceso limitado al personal de confianza de la empresa.
Un plan multifásico de restauración completa y recuperación de datos utilizando herramientas nativas de CentOS puede consistir en:
dd para crear y restaurar imágenes de disco de producción de servidores configurados
rsync para realizar copias de seguridad incrementales de todos los datos del usuario
tar y gzip para almacenar copias de seguridad cifradas de archivos con contraseñas y notas de los administradores. Por lo general, esto se puede guardar en una unidad USB, cifrar y guardar en una caja fuerte a la que acceda un gerente senior. Además, esto garantiza que alguien más conocerá las credenciales de seguridad vitales si el administrador actual gana la lotería y desaparece en una isla soleada en algún lugar.
Si un sistema falla debido a una falla de hardware o un desastre, las siguientes serán las diferentes fases de las operaciones de restauración:
Cree un servidor que funcione con una imagen completa configurada
Restaurar datos al servidor de trabajo desde copias de seguridad
Tener acceso físico a las credenciales necesarias para realizar las dos primeras operaciones.
Utilice rsync para copias de seguridad a nivel de archivo
rsync es una gran utilidad para sincronizar directorios de archivos de forma local o con otro servidor. rsync ha sido utilizado durante años por los administradores del sistema, por lo que es muy refinado con el fin de realizar copias de seguridad de los datos. En opinión del autor, una de las mejores características de la sincronización es su capacidad para ser programada desde la línea de comandos.
En este tutorial, analizaremos rsync de varias formas:
- Explore y hable sobre algunas opciones comunes
- Crea copias de seguridad locales
- Cree copias de seguridad remotas a través de SSH
- Restaurar copias de seguridad locales
rsynclleva el nombre de su propósito: Remote Sync y es potente y flexible en su uso.
A continuación se muestra una copia de seguridad remota básica de rsync sobre ssh:
MiNi:~ rdc$ rsync -aAvz --progress ./Desktop/ImportantStuff/
[email protected]:home/rdc/ Documents/RemoteStuff/
[email protected]'s password:
sending incremental file list
6,148 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=23/25)
2017-02-14 16_26_47-002 - Veeam_Architecture001.png
33,144 100% 31.61MB/s 0:00:00 (xfr#2, to-chk=22/25)
A Guide to the WordPress REST API | Toptal.pdf
892,406 100% 25.03MB/s 0:00:00 (xfr#3, to-chk=21/25)
Rick Cardon Technologies, LLC..webloc
77 100% 2.21kB/s 0:00:00 (xfr#4, to-chk=20/25)
backbox-4.5.1-i386.iso
43,188,224 1% 4.26MB/s 0:08:29
sent 2,318,683,608 bytes received 446 bytes 7,302,941.90 bytes/sec
total size is 2,327,091,863 speedup is 1.00
MiNi:~ rdc$
La siguiente sincronización envió casi 2,3 GB de datos a través de nuestra LAN. La belleza de rsync es que funciona de forma incremental a nivel de bloque, archivo por archivo. Esto significa que, si cambiamos solo dos caracteres en un archivo de texto de 1 MB, ¡solo uno o dos bloques se transferirán a través de la LAN en la próxima sincronización!
Además, la función incremental se puede deshabilitar a favor de más ancho de banda de red utilizado para una menor utilización de la CPU. Esto podría resultar aconsejable si copia constantemente varios archivos de base de datos de 10 MB cada 10 minutos en una Backup-Lan dedicada de 1 Gb. El razonamiento es: estos siempre cambiarán y se transmitirán de forma incremental cada 10 minutos y pueden gravar la carga de la CPU remota. Dado que la carga total de transferencia no excederá los 5 minutos, es posible que deseemos sincronizar los archivos de la base de datos en su totalidad.
A continuación se muestran los conmutadores más comunes con rsync :
rsync syntax:
rsync [options] [local path] [[remote host:remote path] or [target path
Cambiar | Acción |
---|---|
-un | Modo de archivo y asume -r, -p, -t, -g, -l |
-re | Sincronizar solo árbol de directorios, sin archivos |
-r | Recursivo en directorio |
-l | Copiar enlaces simbólicos como enlaces simbólicos |
-pags | Conservar los permisos |
-gramo | Conservar grupo |
-v | Salida detallada |
-z | Comprimir sobre enlace de red |
-X | Conservar atributos extendidos |
-UN | Conservar las ACL |
-t | Conservar marcas de tiempo |
-W | Transfiera el archivo completo, no los bloques incrementales |
-u | No sobrescriba archivos en el destino |
--Progreso | Mostrar el progreso de la transferencia |
--Eliminar | Eliminar archivos antiguos en el objetivo |
- tamaño máximo = XXX | Tamaño máximo de archivo para sincronizar |
Cuando usar rsync
Mi preferencia personal por rsync es cuando se realizan copias de seguridad de archivos desde un host de origen a un host de destino. Por ejemplo, todos los directorios de inicio para la recuperación de datos o incluso fuera del sitio y en la nube para la recuperación de desastres.
Copia de seguridad local con rsync
Ya hemos visto cómo transferir archivos de un host a otro. El mismo método se puede utilizar para sincronizar directorios y archivos localmente.
Hagamos una copia de seguridad incremental manual de / etc / en el directorio de nuestro usuario raíz.
Primero, necesitamos crear un directorio fuera de ~ / root para la copia de seguridad sincronizada -
[[email protected] rdc]# mkdir /root/etc_baks
Luego, asegúrese de que haya suficiente espacio libre en disco.
[[email protected] rdc]# du -h --summarize /etc/
49M /etc/
[[email protected] rdc]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 43G 15G 28G 35% /
Somos buenos para sincronizar todo nuestro directorio / etc / -
rsync -aAvr /etc/ /root/etc_baks/
Nuestro directorio / etc / sincronizado -
[[email protected] etc_baks]# ls -l ./
total 1436
drwxr-xr-x. 3 root root 101 Feb 1 19:40 abrt
-rw-r--r--. 1 root root 16 Feb 1 19:51 adjtime
-rw-r--r--. 1 root root 1518 Jun 7 2013 aliases
-rw-r--r--. 1 root root 12288 Feb 27 19:06 aliases.db
drwxr-xr-x. 2 root root 51 Feb 1 19:41 alsa
drwxr-xr-x. 2 root root 4096 Feb 27 17:11 alternatives
-rw-------. 1 root root 541 Mar 31 2016 anacrontab
-rw-r--r--. 1 root root 55 Nov 4 12:29 asound.conf
-rw-r--r--. 1 root root 1 Nov 5 14:16 at.deny
drwxr-xr-x. 2 root root 32 Feb 1 19:40 at-spi2
--{ condensed output }--
Ahora hagamos un rsync incremental -
[[email protected] etc_baks]# rsync -aAvr --progress /etc/ /root/etc_baks/
sending incremental file list
test_incremental.txt
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=1145/1282)
sent 204620 bytes received 2321 bytes 413882.00 bytes/sec
total size is 80245040 speedup is 387.77
[[email protected] etc_baks]#
Solo se copió nuestro archivo test_incremental.txt .
Copias de seguridad diferenciales remotas con rsync
Hagamos nuestro respaldo completo inicial de rsync en un servidor con un plan de respaldo implementado. Este ejemplo es en realidad una copia de seguridad de una carpeta en una estación de trabajo Mac OS X en un servidor CentOS. Otro gran aspecto de rsync es que se puede utilizar en cualquier plataforma a la que se haya trasladado rsync.
MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
[email protected]:Documents/RemoteStuff
[email protected]'s password:
sending incremental file list
./
A Guide to the WordPress REST API | Toptal.pdf
Rick Cardon Tech LLC.webloc
VeeamDiagram.png
backbox-4.5.1-i386.iso
dhcp_admin_script_update.py
DDWRT/
DDWRT/.DS_Store
DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
DDWRT/ddwrt_mod_notes.docx
DDWRT/factory-to-ddwrt.bin
open_ldap_config_notes/
open_ldap_config_notes/ldap_directory_a.png
open_ldap_config_notes/open_ldap_notes.txt
perl_scripts/
perl_scripts/mysnmp.pl
php_scripts/
php_scripts/chunked.php
php_scripts/gettingURL.php
sent 2,318,281,023 bytes received 336 bytes 9,720,257.27 bytes/sec
total size is 2,326,636,892 speedup is 1.00
MiNi:~ rdc$
Ahora hemos hecho una copia de seguridad de una carpeta desde una estación de trabajo a un servidor que ejecuta un volumen RAID6 con medios de recuperación de desastres rotados almacenados fuera del sitio. El uso de rsync nos ha proporcionado una copia de seguridad estándar 3-2-1 con solo un servidor que tiene una costosa matriz de discos redundantes y copias de seguridad diferenciales rotadas.
Ahora hagamos otra copia de seguridad de la misma carpeta usando rsync después de que se haya agregado un solo archivo nuevo llamado test_file.txt .
MiNi:~ rdc$ rsync -aAvz Desktop/ImportanStuff/
[email protected]:Documents/RemoteStuff
[email protected]'s password:
sending incremental file list
./
test_file.txt
sent 814 bytes received 61 bytes 134.62 bytes/sec
total size is 2,326,636,910 speedup is 2,659,013.61
MiNi:~ rdc$
Como puede ver, solo el nuevo archivo se entregó al servidor a través de rsync . La comparación diferencial se realizó archivo por archivo.
Algunas cosas a tener en cuenta son: Esto solo copia el nuevo archivo: test_file.txt, ya que era el único archivo con cambios. rsync usa ssh. Nunca necesitamos usar nuestra cuenta de root en ninguna de las dos máquinas.
Rsync , simple, potente y eficaz, es ideal para realizar copias de seguridad de carpetas y estructuras de directorios enteras. Sin embargo, rsync por sí solo no automatiza el proceso. Aquí es donde debemos profundizar en nuestra caja de herramientas y encontrar la mejor, pequeña y sencilla herramienta para el trabajo.
Para automatizar las copias de seguridad de rsync con cronjobs , es esencial que los usuarios de SSH se configuren con claves SSH para la autenticación. Esto, combinado con cronjobs, permite que rsync se realice automáticamente a intervalos programados.
Utilice DD para imágenes de recuperación de bare metal bloque a bloque
DD es una utilidad de Linux que ha existido desde los albores del kernel de Linux que se reunió con las utilidades de GNU.
dd en términos más simples copia una imagen de un área de disco seleccionada. Luego brinda la capacidad de copiar bloques seleccionados de un disco físico. Entonces, a menos que tenga copias de seguridad, una vez que dd escribe en un disco, todos los bloques se reemplazan. La pérdida de datos anteriores excede las capacidades de recuperación para la recuperación de datos de nivel profesional incluso a un precio muy alto.
El proceso completo para crear una imagen de sistema de arranque con dd es el siguiente:
- Arranque desde el servidor CentOS con una distribución de Linux de arranque
- Busque la designación del disco de arranque para la imagen
- Decidir la ubicación donde se almacenará la imagen de recuperación
- Encuentre el tamaño de bloque usado en su disco
- Inicie la operación de imagen dd
En este tutorial, por razones de tiempo y simplicidad, crearemos una imagen ISO del registro de arranque maestro desde una máquina virtual CentOS. Luego almacenaremos esta imagen fuera del sitio. En caso de que nuestro MBR se corrompa y deba restaurarse, el mismo proceso se puede aplicar a un disco o partición de arranque completo. Sin embargo, el tiempo y el espacio en disco necesarios son un poco exagerados para este tutorial.
Se recomienda que los administradores de CentOS se vuelvan competentes en la restauración de un disco / partición totalmente de arranque en un entorno de prueba y realicen una restauración completa. Esto eliminará mucha presión cuando finalmente se necesite completar la práctica en una situación de la vida real con gerentes y algunas docenas de usuarios finales contando el tiempo de inactividad. En tal caso, 10 minutos de resolver las cosas pueden parecer una eternidad y hacer sudar.
Note- Cuando utilice dd, asegúrese de NO confundir los volúmenes de origen y de destino. Puede destruir datos y servidores de arranque copiando su ubicación de copia de seguridad en una unidad de arranque. O posiblemente, peor aún, destruir los datos para siempre copiando datos a un nivel muy bajo con DD.
A continuación se muestran los parámetros y modificadores de línea de comando comunes para dd :
Cambiar | Acción |
---|---|
si = | En archivo o fuente para copiar |
de = | Archivo de salida o copia del archivo de entrada |
bs | Establecer el tamaño del bloque de entrada y salida |
obs | Establecer el tamaño del bloque del archivo de salida |
SII | Establecer el tamaño del bloque del archivo de entrada |
contar | Establecer el número de bloques a copiar |
conv | Opciones adicionales para agregar para imágenes |
No hay error | No dejes de procesar un error |
sincronizar | Bloques de entrada de pads sin montar en caso de error o desalineación |
Note on block size- El tamaño de bloque predeterminado para dd es 512 bytes. Este era el tamaño de bloque estándar de las unidades de disco duro de menor densidad. Los HDD de mayor densidad de hoy en día han aumentado a 4096 bytes (4kB) tamaños de bloque para permitir discos que van desde 1TB y más. Por lo tanto, querremos verificar el tamaño del bloque del disco antes de usar dd con discos duros más nuevos y de mayor capacidad.
Para este tutorial, en lugar de trabajar en un servidor de producción con dd , usaremos una instalación de CentOS que se ejecuta en VMWare. También configuraremos VMWare para que arranque una imagen ISO de Linux de arranque en lugar de trabajar con una memoria USB de arranque.
Primero, necesitaremos descargar la imagen de CentOS titulada: CentOS Gnome ISO . Esto es casi 3GB y se recomienda guardar siempre una copia para crear unidades de memoria USB de arranque y arrancar en instalaciones de servidores virtuales para la resolución de problemas y las imágenes completas.
Otras distribuciones de Linux de arranque también funcionarán. Linux Mint se puede usar para ISO de arranque, ya que tiene un excelente soporte de hardware y herramientas de disco GUI pulidas para el mantenimiento.
La imagen de arranque de CentOS GNOME Live se puede descargar desde: http://buildlogs.centos.org/rolling/7/isos/x86_64/CentOS-7-x86_64-LiveGNOME.iso
Configuremos nuestra instalación de VMWare Workstation para arrancar desde nuestra imagen de arranque de Linux. Los pasos son para VMWare en OS X. Sin embargo, son similares en VMWare Workstation en Linux, Windows e incluso Virtual Box.
Note- Usar una solución de escritorio virtual como Virtual Box o VMWare Workstation es una excelente manera de configurar escenarios de laboratorio para aprender las tareas de administración de CentOS. Proporciona la capacidad de instalar varias instalaciones de CentOS, prácticamente sin configuración de hardware, lo que permite que la persona se concentre en la administración e incluso guarde el estado del servidor antes de realizar cambios.
Primero configuremos un cd-rom virtual y adjuntemos nuestra imagen ISO para arrancar en lugar de la instalación del servidor virtual CentOS -
Ahora, configure el disco de inicio -
Ahora, cuando se inicie, nuestra máquina virtual se iniciará desde la imagen ISO de inicio de CentOS y permitirá el acceso a los archivos en el servidor Virtual CentOS que se configuró previamente.
Revisemos nuestros discos para ver de dónde queremos copiar el MBR (la salida condensada es la siguiente).
MiNt ~ # fdisk -l
Disk /dev/sda: 60 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Hemos localizado nuestros dos discos físicos: sda y sdb . Cada uno tiene un tamaño de bloque de 512 bytes. Entonces, ahora ejecutaremos el comando dd para copiar los primeros 512 bytes para nuestro MBR en SDA1.
La mejor forma de hacer esto es:
[[email protected] rdc]# dd if=/dev/sda bs=512 count=1 | gzip -c >
/mnt/sdb/images/mbr.iso.gz
1+0 records in
1+0 records out
512 bytes copied, 0.000171388 s, 3.0 MB/s
[[email protected] rdc]# ls /mnt/sdb/
mbr-iso.gz
[[email protected] rdc]#
Así, tenemos una imagen completa de nuestro registro de arranque maestro. Si tenemos suficiente espacio para crear una imagen de la unidad de arranque, podríamos crear fácilmente una imagen de arranque del sistema completo:
dd if=/dev/INPUT/DEVICE-NAME-HERE conv=sync,noerror bs=4K | gzip -c >
/mnt/sdb/boot-server-centos-image.iso.gz
La conv = sincronización se utiliza cuando bytes deben estar alineados para un medio físico. En este caso, dd puede obtener un error si no se leen las alineaciones 4K exactas (digamos ... un archivo que es solo 3K pero necesita tomar un mínimo de un bloque 4K en el disco. O simplemente hay una lectura de error y el El archivo no puede ser leído por dd.). Por lo tanto, dd con conv = sync, noerror rellenará el 3K con datos triviales pero útiles para el medio físico en alineaciones de bloques de 4K. Sin presentar un error que pueda poner fin a una gran operación.
Cuando trabajamos con datos de discos, siempre queremos incluir: conv = sync, parámetro noerror .
Esto se debe simplemente a que los discos no son flujos como los datos TCP. Están formados por bloques alineados a un tamaño determinado. Por ejemplo, si tenemos bloques de 512 bytes, un archivo de solo 300 bytes todavía necesita 512 bytes completos de espacio en disco (posiblemente 2 bloques para información de inodo como permisos y otra información del sistema de archivos).
Utilice gzip y tar para almacenamiento seguro
gzip y tar son dos utilidades que un administrador de CentOS debe acostumbrarse a usar. Se utilizan para mucho más que simplemente descomprimir archivos.
Usando Gnu Tar en CentOS Linux
Tar es una utilidad de archivo similar a winrar en Windows. Su nombre Tape Archive abreviado como tar resume bastante bien la utilidad. tar tomará archivos y los colocará en un archivo por conveniencia lógica. Por lo tanto, en lugar de las docenas de archivos almacenados en / etc. podríamos simplemente "guardarlos" en un archivo para realizar copias de seguridad y almacenarlos.
tar ha sido el estándar para almacenar archivos archivados en Unix y Linux durante muchos años. Por lo tanto, el uso de tar junto con gzip o bzip se considera una mejor práctica para los archivos en cada sistema.
A continuación se muestra una lista de opciones y conmutadores de línea de comando comunes que se utilizan con tar:
Cambiar | Acción |
---|---|
-C | Crea un nuevo archivo .tar |
-C | Extrae a un directorio diferente |
-j | Utiliza compresión bzip2 |
-z | Utiliza compresión gzip |
-v | Verbose muestra el progreso del archivo |
-t | Muestra el contenido del archivo |
-F | Nombre de archivo del archivo |
-X | Extrae el archivo tar |
A continuación se muestra la sintaxis básica para crear un archivo tar .
tar -cvf [tar archive name]
Note on Compression mechanisms with tar- Se recomienda seguir con uno de los dos esquemas de compresión comunes cuando se usa tar: gzip y bzip2. Los archivos gzip consumen menos recursos de CPU pero suelen ser de mayor tamaño. Si bien bzip2 tardará más en comprimirse, utilizan más recursos de CPU; pero resultará en un final más pequeño.
Al usar la compresión de archivos, siempre querremos usar extensiones de archivo estándar para que todos, incluidos nosotros mismos, sepan (en lugar de adivinar por prueba y error) qué esquema de compresión se necesita para extraer archivos.
bzip2 | .tbz |
bzip2 | .tar.tbz |
bzip2 | .tb2 |
gzip | .tar.gz |
gzip | .tgz |
Cuando necesite extraer archivos en una caja de Windows o para usar en Windows, se recomienda utilizar .tar.tbz o .tar.gz, ya que la mayoría de las extensiones de tres caracteres confundirán a los administradores de Windows y solo a los administradores de Windows a veces el resultado deseado)
Creemos un archivo tar comprimido con gzip a partir de nuestras copias de seguridad remotas copiadas desde la estación de trabajo Mac -
[[email protected] Documents]$ tar -cvz -f RemoteStuff.tgz ./RemoteStuff/
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[[email protected] Documents]$ ls -ld RemoteStuff.tgz
-rw-rw-r--. 1 rdc rdc 2317140451 Mar 12 06:10 RemoteStuff.tgz
Note- En lugar de agregar todos los archivos directamente al archivo, archivamos toda la carpeta RemoteStuff . Este es el método más sencillo. Simplemente porque cuando se extrae, todo el directorio RemoteStuff se extrae con todos los archivos dentro del directorio de trabajo actual como ./currentWorkingDirectory/RemoteStuff/
Ahora extraigamos el archivo dentro del directorio / root / home.
[[email protected] ~]# tar -zxvf RemoteStuff.tgz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
./RemoteStuff/php_scripts/gettingURL.php
./RemoteStuff/A Guide to the WordPress REST API | Toptal.pdf
./RemoteStuff/Rick Cardon Tech LLC.webloc
./RemoteStuff/VeeamDiagram.png
./RemoteStuff/backbox-4.5.1-i386.iso
./RemoteStuff/dhcp_admin_script_update.py
./RemoteStuff/test_file.txt
[[email protected] ~]# ping www.google.com
Como se vio anteriormente, todos los archivos simplemente se extrajeron en el directorio que los contiene dentro de nuestro directorio de trabajo actual.
[[email protected] ~]# ls -l
total 2262872
-rw-------. 1 root root 1752 Feb 1 19:52 anaconda-ks.cfg
drwxr-xr-x. 137 root root 8192 Mar 9 04:42 etc_baks
-rw-r--r--. 1 root root 1800 Feb 2 03:14 initial-setup-ks.cfg
drwxr-xr-x. 6 rdc rdc 4096 Mar 10 22:20 RemoteStuff
-rw-r--r--. 1 root root 2317140451 Mar 12 07:12 RemoteStuff.tgz
-rw-r--r--. 1 root root 9446 Feb 25 05:09 ssl.conf [[email protected] ~]#
Utilice gzip para comprimir copias de seguridad de archivos
Como se señaló anteriormente, podemos usar bzip2 o gzip de tar con la -j o -zinterruptores de línea de comando. También podemos usar gzip para comprimir archivos individuales. Sin embargo, usar bzip o gzip por sí solo no ofrece tantas funciones como cuando se combina con tar .
Al usar gzip , la acción predeterminada es eliminar los archivos originales, reemplazando cada uno con una versión comprimida agregando la extensión .gz.
Algunos modificadores de línea de comando comunes para gzip son:
Cambiar | Acción |
---|---|
-C | Mantiene los archivos después de colocarlos en el archivo |
-l | Obtenga estadísticas del archivo comprimido |
-r | Comprime de forma recursiva archivos en los directorios |
-1 a 9 | Especifica el nivel de compresión en una escala del 1 al 9 |
gzip funciona más o menos archivo por archivo y no como archivo como algunas utilidades zip de Windows O / S. La razón principal de esto es que tar ya proporciona funciones de archivo avanzadas. gzip está diseñado para proporcionar solo un mecanismo de compresión.
Por lo tanto, cuando piense en gzip , piense en un solo archivo. Cuando piense en varios archivos, piense en archivos tar . Exploremos ahora esto con nuestro archivo tar anterior .
Note - Los profesionales experimentados de Linux a menudo se refieren a un archivo alquilado como tarball.
Hagamos otro archivo tar a partir de nuestra copia de seguridad de rsync .
[[email protected] Documents]# tar -cvf RemoteStuff.tar ./RemoteStuff/
[[email protected] Documents]# ls
RemoteStuff.tar RemoteStuff/
Para fines de demostración, hagamos gzip del tarball recién creado y digamos a gzip que conserve el archivo anterior. De forma predeterminada, sin la opción -c , gzip reemplazará todo el archivo tar con un archivo .gz .
[[email protected] Documents]# gzip -c RemoteStuff.tar > RemoteStuff.tar.gz
[[email protected] Documents]# ls
RemoteStuff RemoteStuff.tar RemoteStuff.tar.gz
We now have our original directory, our tarred directory and finally our gziped tarball.
Intentemos probar el modificador -l con gzip .
[[email protected] Documents]# gzip -l RemoteStuff.tar.gz
compressed uncompressed ratio uncompressed_name
2317140467 2326661120 0.4% RemoteStuff.tar
[[email protected] Documents]#
Para demostrar en qué se diferencia gzip de las utilidades Zip de Windows, ejecutemos gzip en una carpeta de archivos de texto.
[[email protected] Documents]# ls text_files/
file1.txt file2.txt file3.txt file4.txt file5.txt
[[email protected] Documents]#
Ahora usemos la opción -r para comprimir recursivamente todos los archivos de texto en el directorio.
[[email protected] Documents]# gzip -9 -r text_files/
[[email protected] Documents]# ls ./text_files/
file1.txt.gz file2.txt.gz file3.txt.gz file4.txt.gz file5.txt.gz
[[email protected] Documents]#
¿Ver? No es lo que algunos pudieron haber anticipado. Todos los archivos de texto originales se eliminaron y cada uno se comprimió individualmente. Debido a este comportamiento, es mejor pensar en gzip solo cuando se necesita trabajar en archivos individuales.
Trabajando con tarballs , extraigamos nuestro tarball sincronizado en un nuevo directorio.
[[email protected] Documents]# tar -C /tmp -zxvf RemoteStuff.tar.gz
./RemoteStuff/
./RemoteStuff/.DS_Store
./RemoteStuff/DDWRT/
./RemoteStuff/DDWRT/.DS_Store
./RemoteStuff/DDWRT/ddwrt-linksys-wrt1200acv2-webflash.bin
./RemoteStuff/DDWRT/ddwrt_mod_notes.docx
./RemoteStuff/DDWRT/factory-to-ddwrt.bin
./RemoteStuff/open_ldap_config_notes/
./RemoteStuff/open_ldap_config_notes/ldap_directory_a.png
./RemoteStuff/open_ldap_config_notes/open_ldap_notes.txt
./RemoteStuff/perl_scripts/
./RemoteStuff/perl_scripts/mysnmp.pl
./RemoteStuff/php_scripts/
./RemoteStuff/php_scripts/chunked.php
Como se vio arriba, extrajimos y descomprimimos nuestro tarball en el directorio / tmp.
[[email protected] Documents]# ls /tmp
hsperfdata_root
RemoteStuff
Cifrar archivos TarBall
Encriptar archivos tarball para almacenar documentos seguros a los que otros empleados de la organización pueden tener que acceder, en caso de recuperación ante desastres, puede ser un concepto complicado. Básicamente, hay tres formas de hacer esto: use GnuPG, o use openssl, o use una utilidad de tercera parte.
GnuPG está diseñado principalmente para el cifrado asimétrico y tiene en mente una asociación de identidad en lugar de una frase de contraseña. Es cierto que se puede usar con cifrado simétrico, pero esta no es la principal fortaleza de GnuPG. Por lo tanto, descartaría a GnuPG por almacenar archivos con seguridad física cuando más personas que la persona original pueden necesitar acceso (como tal vez un gerente corporativo que quiere protegerse contra un Administrador que tiene todas las claves del reino como palanca).
Openssl como GnuPG puede hacer lo que queramos y se envía con CentOS. Pero, nuevamente, no está diseñado específicamente para hacer lo que queremos y el cifrado ha sido cuestionado en la comunidad de seguridad.
Nuestra elección es una utilidad llamada 7zip. 7zip es una utilidad de compresión como gzip pero con muchas más funciones. Al igual que Gnu Gzip, 7zip y sus estándares están en la comunidad de código abierto. Solo necesitamos instalar 7zip desde nuestro repositorio EHEL (el próximo capítulo cubrirá la instalación de los repositorios empresariales extendidos en detalle).
Instalar 7zip en Centos
7zip es una instalación simple una vez que nuestros repositorios EHEL se han cargado y configurado en CentOS.
[[email protected] Documents]# yum -y install p7zip.x86_64 p7zip-plugins.x86_64
Loaded plugins: fastestmirror, langpacks
base
| 3.6 kB 00:00:00
epel/x86_64/metalink
| 13 kB 00:00:00
epel
| 4.3 kB 00:00:00
extras
| 3.4 kB 00:00:00
updates
| 3.4 kB 00:00:00
(1/2): epel/x86_64/updateinfo
| 756 kB 00:00:04
(2/2):
epel/x86_64/primary_db
| 4.6 MB 00:00:18
Loading mirror speeds from cached hostfile
--> Running transaction check
---> Package p7zip.x86_64 0:16.02-2.el7 will be installed
---> Package p7zip-plugins.x86_64 0:16.02-2.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
Así de simple, 7zip está instalado y listo para usarse con cifrado AES de 256 bits para nuestros archivos tarball.
Ahora usemos 7z para cifrar nuestro archivo comprimido con gzip con una contraseña. La sintaxis para hacerlo es bastante simple:
7z a -p <output filename><input filename>
Dónde, a: agregar al archivo, y -p: cifrar y solicitar la contraseña
[[email protected] Documents]# 7z a -p RemoteStuff.tgz.7z RemoteStuff.tar.gz
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,1 CPU Intel(R)
Core(TM) i5-4278U CPU @ 2.60GHz (40651),ASM,AES-NI)
Scanning the drive:
1 file, 2317140467 bytes (2210 MiB)
Creating archive: RemoteStuff.tgz.7z
Items to compress: 1
Enter password (will not be echoed):
Verify password (will not be echoed) :
Files read from disk: 1
Archive size: 2280453410 bytes (2175 MiB)
Everything is Ok
[[email protected] Documents]# ls
RemoteStuff RemoteStuff.tar RemoteStuff.tar.gz RemoteStuff.tgz.7z slapD
text_files
[[email protected] Documents]#
Ahora, tenemos nuestro archivo .7z que cifra el tarball comprimido con gzip con AES de 256 bits.
Note- 7zip utiliza cifrado AES de 256 bits con un hash SHA-256 de la contraseña y el contador, repetido hasta 512K veces para la derivación de claves. Esto debería ser lo suficientemente seguro si se utiliza una clave compleja.
El proceso de cifrar y volver a comprimir el archivo puede llevar algún tiempo con archivos más grandes.
7zip es una oferta avanzada con más funciones que gzip o bzip2. Sin embargo, no es estándar con CentOS o en el mundo Linux. Por lo tanto, las otras utilidades deben usarse con la mayor frecuencia posible.