Site is under maintenance mode. Please wait few min!
Saltar al contenido

Una introducción a la terminología y conceptos de SaltStack

marzo 4, 2020

 

Introducción

Duplicity es una utilidad de línea de comandos escrito en Python que produce volúmenes de alquitrán encriptados para el almacenamiento en un depósito local o remoto. Utiliza el GNU Privacy Guardia (GPG) para cifrar y firmar sus archivos y el algoritmo rsync para crear incrementales, copias de seguridad eficiente del espacio. Las copias de seguridad se pueden transmitir a una variedad de repositorios, incluyendo el almacenamiento local de archivos, servidores SFTP o FTP, y almacenes de objetos compatibles con S3.

En este tutorial, vamos a instalar duplicidad e ir sobre cómo realizar una copia de seguridad de datos de proyectos para espacios digitalocean, un servicio de almacenamiento de objetos compatibles con S3. Vamos a crear un repositorio de espacios para este fin, y la cubierta de cómo realizar una copia de seguridad de datos de forma manual a la misma. Por último, vamos a automatizar este proceso mediante la creación de un script que establezca planificaciones de copia de seguridad incremental completa y semanales.

Requisitos previos

Para este tutorial, necesitará:

  • Un servidor de Ubuntu 16.04, establecido a raíz de nuestra configuración inicial del servidor con Ubuntu 16.04 tutorial. Después de seguir este tutorial, usted debe tener un usuario no root sudo.
  • Un espacio digitalocean y clave de API, creados siguiendo cómo crear un espacio digitalocean y clave de API. Asegúrese de tener en cuenta las siguientes credenciales de su espacio: Acceso Acceso KeySecret KEYSPACE URLBucket Nombre
  • clave
  • clave secreta
  • URL Espacio
  • Cubo Nombre

Una Ubuntu 16.04 servidor, creado a raíz de nuestra configuración inicial del servidor con Ubuntu 16.04 tutorial. Después de seguir este tutorial, usted debe tener un usuario no root sudo.

Un espacio digitalocean y clave de API, creados siguiendo cómo crear un espacio digitalocean y clave de API. Asegúrese de tener en cuenta las siguientes credenciales de su espacio: Acceso

  • clave
  • clave secreta
  • URL Espacio
  • Cubo Nombre

vez que tenga su espacio configurado y esta información en la mano, se puede pasar a la instalación Duplicidad.

Instalación duplicidad

Para obtener una versión actualizada de la duplicidad, podemos instalarlo desde la duplicidad libera Personal Package Archive (PPA):

sudo apt-add-repository ppa:duplicity-team/ppa

  • sudo ppa add-apt-repositorio: duplicidad-equipo / ppa

también se instalará el paquete python-boto tener acceso a boto, un paquete de Python que proporciona interfaces de servicios web de Amazon. Esto nos ayudará a tomar ventaja de la interoperabilidad Spaces’ con la API de AWS S3. Vamos a instalar Python-boto desde los repositorios oficiales de Ubuntu, ya que esta versión es compatible con la versión de Python que se incluye nuestra imagen del servidor Ubuntu con. Si prefiere utilizar Boto3, se puede instalar desde el código fuente, aunque la compatibilidad con Python 3.3+ función está todavía en desarrollo.

Además de pitón-boto, también se instalará Haveged, una herramienta que nos ayudará a generar la entropía necesario crear nuestras claves GPG. Con el fin de crear estas claves, GPG se basa en el nivel de entropía o imprevisibilidad en nuestro sistema. Instalación haveged nos ayudará a acelerar el proceso de creación de claves.

Antes de instalar estos paquetes, actualizar el índice repositorio local:

sudo apt-get update

  • sudo apt-get update

A continuación, instalar la duplicidad, pitón-boto, y haveged escribiendo:

sudo apt-get install duplicity haveged python-boto

  • sudo python apt-get install duplicidad haveged -boto

Pulse y cuando se le solicite a la instalación de confirmación. Ahora tenemos duplicidad instalado en nuestro sistema y estamos listos para crear nuestras carpetas de proyecto y archivos de configuración.

Creación de una copia de seguridad Directorio

Para demostrar cómo funciona el proceso de copia de seguridad, vamos a crear un directorio para nuestras copias de seguridad en el directorio principal de nuestro usuario no root, junto con algunos datos de la muestra. Vamos a llamar a nuestros sammy_backups directorio:

mkdir ~/sammy_backups

  • mkdir ~ / sammy_backups

A continuación, cree un archivo de ejemplo proyecto llamado historical_sharks.txt:

echo "The ancient Megalodon shark reached lengths of up to 59 feet, and is widely regarded as one of history's most fearsome predators." >> ~/sammy_backups/historical_sharks.txt

  • echo «El antiguo tiburón Megalodon alcanza longitudes de hasta 59 pies, y está ampliamente considerado como uno de los más temibles depredadores de la historia «. >> ~ / sammy_backups / historical_sharks.txt

Con nuestros datos de directorio y de prueba de copia de seguridad en su lugar, estamos listos para generar una clave GPG para nuestro usuario no root.

Generación de claves GPG

A continuación, se va a generar un par de claves GPG para nuestro usuario. Para garantizar la transmisión segura de información, GPG utiliza el cifrado de clave pública. Lo que esto significa en nuestro contexto es que los datos serán encriptados para nuestra clave pública y se envían a nuestro repositorio. Para más información sobre el cifrado de claves GPG y ver nuestro tutorial sobre cómo utilizar GPG para firmar y cifrar mensajes.

Nuestros anillos de claves serán almacenados en nuestra cuenta de usuario en un directorio llamado ~ / .gnupg, que se crea cuando se generan las claves. Cuando usamos el comando duplicidad, vamos a especificar un identificador de clave pública que apunta a nuestro par de claves. El uso de este identificador permite el cifrado de datos y la firma que verifica nuestra posesión de la clave privada. Los datos cifrados se transmitirá a nuestro repositorio, donde será difícil inferir mucho más que el tamaño del archivo y el tiempo de carga de los propios archivos. Esto protege nuestros datos, que nuestro usuario puede restaurar en su totalidad en cualquier momento con la clave privada.

GPG debe ser instalado en nuestro servidor por defecto. Para probar esto, Tipo:

gpg --version

  • gpg –version

Una vez que haya comprobado que gpg está instalado, puede generar un par de claves de la siguiente manera:

gpg --gen-key

  • gpg –gen-clave

Se hará se le pedirá una serie de preguntas para configurar las teclas:

  • tipo de clave. Seleccione (1) RSA y RSA (por defecto). Tamaño
  • de llave. Presionando ENTER confirmar el tamaño predeterminado de 2048 bits.
  • Clave fecha de caducidad. Al participar en 1a, vamos a crear una clave que expira después de un año.
  • confirmar sus opciones. Usted puede hacer esto mediante la introducción de y.
  • ID de usuario / nombre real. Introduzca su nombre.
  • dirección de correo electrónico. Introduzca su dirección de correo electrónico.
  • comentario. Aquí, se puede introducir un comentario opcional que será visible con su firma.
  • Cambio (N) AME, © omment, (E) electrónico o (O) UIT kay / (Q)? El tipo O si usted está listo para proceder.
  • Introduzca la frase de contraseña. Se le pedirá que introduzca una contraseña aquí. Asegúrese de tomar nota de esta frase de contraseña. Nos referiremos de nuevo a él durante el resto de este tutorial como su-GPG-KEY-frase de contraseña.

Después de haber creado estos ajustes, GPG generará las claves basadas en el nivel de entropía en el sistema. Desde que instalamos haveged, nuestras llaves deben ser generados o muy rápido o inmediato. Verá una salida que incluye lo siguiente:

Output...
gpg: /home/sammy/.gnupgrustdb.gpg: trustdb created
gpg: key your-GPG-public-key-id marked as ultimately trusted
public and secret key created and signed.
...

tomar nota de su-GPG-de clave pública-clave, como vamos a utilizar en la siguiente sección para configurar las variables de entorno locales.

Creación de copias de seguridad Manual

Ahora vamos a establecer variables de entorno de modo que no es necesario introducir ninguna información confidencial sobre la línea de comandos mientras se ejecuta el comando duplicidad. Estas variables estarán disponibles en nuestro usuario durante la sesión actual, y vamos a guardarlos en un directorio oculto para que estén disponibles para su uso posterior. Las variables que se necesitan, la duplicidad que definiremos como variables de entorno, incluyen nuestros espacios de acceso y la clave secreta y pública nuestra ID de la llave GPG y contraseña.

Para empezar, vamos a crear un directorio oculto en el directorio home de nuestro usuario que almacenará el fichero de configuración:

mkdir ~/.duplicity

  • mkdir ~ / .duplicity

A continuación, vamos a crear un archivo llamado .env_variables.conf para definir nuestras variables, lo que vamos a hacer uso de las declaraciones de exportación. Estas declaraciones harán las variables disponibles para los programas para su uso posterior. Abra el archivo escribiendo:

nano ~/.duplicity/.env_variables.conf

  • nano ~ / .duplicity / .env_variables.conf

Dentro del archivo, establecer sus espacios de acceso clave y el secreto, así como su GPG pública ID de la llave y la frase de contraseña:

export AWS_ACCESS_KEY_ID="your-access-key"
export AWS_SECRET_ACCESS_KEY="your-secret-key"
export GPG_KEY="your-GPG-public-key-id"
export PASSPHRASE="your-GPG-key-passphrase"

Guardar y cierre el archivo cuando haya terminado.

Ahora puede establecer permisos en el archivo para asegurarse de que sólo nuestra actual usuario no root ha leído y acceso de escritura:

chmod 0600 ~/.duplicity/.env_variables.conf

  • chmod 0600 ~ / .duplicity / .env_variables.conf

Hacer estas variables disponibles para su uso en la sesión actual Bash escribiendo: fuente

source ~/.duplicity/.env_variables.conf

  • ~ / .duplicity / .env_variables.conf

a continuación, vamos a ejecutar la duplicidad de crear un manual de copia de seguridad completa de nuestro directorio ~ / sammy_backups. Ejecución de la duplicidad sin la plena acción creará una copia de seguridad completa inicial, seguida de copias de seguridad incrementales. Vamos a crear una copia de seguridad completa en nuestro primer uso del comando, pero si desea crear otra copia de seguridad manual completo de este directorio, lo que se necesita para especificar la acción completa.

Otras opciones que vamos a definir en nuestro comando incluyen:

  • –verbosity: Esto especificará el nivel de información que nos gustaría en nuestra salida. Especificaremos información, que proporcionará más detalle que el ajuste de aviso por defecto.
  • –encrypt-sign-clave: Esto le indicará a la duplicidad a cifrar con la clave pública de la pareja se identificaron con su-GPG-de clave pública-id en la variable GPG_KEY. También le dirá la duplicidad de utilizar el mismo identificador para activar la función de firma.
  • –log-file: Esta opción se especifique una ubicación para los archivos de registro que también estarán disponibles para otros programas. Esto nos dará un lugar sencillo para buscar en caso de que deba solucionar. Vamos a especificar la ubicación del archivo de registro como /home/sammy/.duplicity/info.log.

Finalmente, se especificará el directorio que son copias de seguridad de punto final y nuestro repositorio. Vamos a una copia de seguridad del directorio ~ / sammy_backups en el directorio personal de nuestros usuarios. Nuestro repositorio será nuestro espacio, lo que vamos a definir utilizando la siguiente información: s3: // spaces_endpoint / bucket_name /. Se puede determinar el punto final y nombre de depósito de la siguiente manera: si la URL de su espacio es https://sammys-bucket.nyc3.digitaloceanspaces.com, entonces sammys-cubo es el nombre de depósito, y nyc3.digitaloceanspaces.com es su punto final .

Nuestra orden duplicidad en última instancia, tener este aspecto:

duplicity --verbosity info --encrypt-sign-key=$GPG_KEY --log-file /home/sammy/.duplicity/info.log /home/sammy/sammy_backups
s3:/
yc3.digitaloceanspaces.com/sammys-bucket/

  • duplicidad –verbosity de información de inicio de sesión clave –encrypt = $ GPG_KEY –log-file /home/sammy/.duplicity/info.log / home / Sammy / sammy_backups
  • s3: /
    yc3.digitaloceanspaces.com/sammys-bucket/

Después de ejecutar este comando, vamos a ver una salida como la siguiente: cheque

Output...
--------------[ Backup Statistics ]--------------
StartTime 1522417021.39 (Fri Mar 30 13:37:01 2018)
EndTime 1522417021.40 (Fri Mar 30 13:37:01 2018)
ElapsedTime 0.01 (0.01 seconds)
SourceFiles 2
SourceFileSize 4226 (4.13 KB)
NewFiles 2
NewFileSize 4226 (4.13 KB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 2
RawDeltaSize 130 (130 bytes)
TotalDestinationSizeChange 955 (955 bytes)
Errors 0
-------------------------------------------------

para que los archivos subido a su espacio como estaba previsto, se puede navegar a la página de los espacios en el panel de control digitalocean para comprobar que están ahí.

Restauración de archivos de prueba

Para que podamos restaurar nuestros datos, ahora vamos a quitar nuestro archivo de ejemplo y restaurarlo desde nuestro repositorio. Para restaurar los archivos con la duplicidad, podemos utilizar la opción –file-a-restauración. También es necesario invertir el orden de los elementos en nuestro comando de duplicidad: nuestra URL del repositorio actuará ahora como el origen, y nuestro directorio de copia de seguridad será el destino de nuestro archivo restaurado.

Retire el archivo escribiendo:

rm ~/sammy_backups/historical_sharks.txt

  • rm ~ / sammy_backups / historical_sharks.txt

Compruebe para asegurarse de que el archivo fue eliminado:

cat ~/sammy_backups/historical_sharks.txt

  • cat ~ / sammy_backups / historical_sharks.txt

Usted debe ver la siguiente salida:

Outputcat: /home/sammy/sammy_backups/historical_sharks.txt: No such file or directory

continuación, vamos a restaurar este archivo desde nuestro espacio. La opción –file-a-restauración nos permite especificar la ruta del archivo que desea restaurar. Esta ruta debe ser relativa al directorio que hemos respaldado; en nuestro caso, nuestra ruta relativa será historical_sharks.txt. También vamos a invertir el orden de nuestra URL del espacio y el directorio de copia de seguridad para indicar que estamos restaurando el archivo desde nuestro repositorio:

duplicity --verbosity info --encrypt-sign-key=$GPG_KEY --log-file /home/sammy/.duplicity/info.log --file-to-restore historical_sharks.txt
s3:/
yc3.digitaloceanspaces.com/sammys-bucket /home/sammy/sammy_backups/historical_sharks.txt

  • duplicidad –verbosity de información de inicio de sesión clave –encrypt = $ GPG_KEY –log-file / Inicio / Sammy / .duplicity / info.log –file-a-restaurar historical_sharks.txt
  • s3: /
    yc3.digitaloceanspaces.com/sammys-bucket /home/sammy/sammy_backups/historical_sharks.txt

Usted gato

Output...
Processing local manifest /home/sammy/.cache/duplicity/d9911d387bb9ee345a171141106ab714/duplicity-full.20180402T170008Z.manifest (195)
Found 1 volumes in manifest
Deleting mp/duplicity-e66MEL-tempdir/mktemp-_A24DP-6
Processed volume 1 of 1

a correr de nuevo dará salida a los contenidos del archivo historical_sharks.txt restaurado:: verá una salida como la siguiente

cat ~/sammy_backups/historical_sharks.txt

  • cat ~ / sammy_backups / historical_sharks.txt

OutputThe ancient Megalodon shark reached lengths of up to 59 feet, and is widely regarded as one of history's most fearsome predators.

Ahora que hemos creado una copia de seguridad manual de el directorio ~ / sammy_backups y datos restaurados de nuestro repositorio, estamos listos para pasar a la automatización del proceso de copia de seguridad.

Automatización de copias de seguridad

automatizar el proceso de copia de seguridad puede ayudar a asegurar que los datos en nuestro directorio ~ / sammy_backups resto recuperable y hasta al día. Podemos utilizar el planificador de tareas cron para crear una programación de copia de seguridad que incluirá una copia de seguridad completa cada semana y copias de seguridad incrementales de otra manera. Para obtener más información acerca del uso de cron para programar tareas, echa un vistazo a nuestro tutorial sobre cómo programar tareas rutinarias con Cron y Anacron en un VPS.

En primer lugar, vamos a crear un script de respaldo en nuestro directorio ~ / .duplicity:

nano ~/.duplicity/.backup.sh

  • nano ~ / .duplicity / .backup.sh

Dentro de este archivo, primero especificar que este guión estará a cargo de la Bash shell:

#!/bin/bash

a continuación, vamos a crear una variable HOME para usar con nuestros comandos de origen y la duplicidad. Asegúrese de cambiar el nombre de usuario resaltado, el directorio de copia de seguridad, y el nombre de depósito con su información:

...
HOME="/home/sammy"

source "$HOME/.duplicity/.env_variables.conf"

duplicity
--verbosity info
--encrypt-sign-key="$GPG_KEY"
--full-if-older-than 7D
--log-file "$HOME/.duplicity/info.log"
/home/sammy/sammy_backups
s3:/
yc3.digitaloceanspaces.com/sammys-bucket/

Los comandos de origen y duplicidad hacen el mismo trabajo aquí que lo hicieron cuando creamos nuestra copia de seguridad manual: cargas de fuentes nuestros variables de entorno en el contexto actual , mientras que la duplicidad crea volúmenes cifrados de alquitrán para enviar a nuestro repositorio. Nuestras opciones de todo siguen siendo los mismos, a excepción de la adición de la –full-si-mayores-de opción. Fijó en 7D, esta opción especifica que una copia de seguridad completa ocurrirá cada semana, una vez que la última copia de seguridad completa es mayor de siete días.

Los elementos finales en nuestro script serán comandos no se ha establecido que quitarán nuestras variables de entorno como medida de seguridad:

...
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset GPG_KEY
unset PASSPHRASE

El guión completo se verá así:

#!/bin/bash

HOME="/home/sammy"

source "$HOME/.duplicity/.env_variables.conf"

duplicity
--verbosity info
--encrypt-sign-key="$GPG_KEY"
--full-if-older-than 7D
--log-file "$HOME/.duplicity/info.log"
/home/sammy/sammy_backups
s3:/
yc3.digitaloceanspaces.com/sammys-bucket/

unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset GPG_KEY
unset PASSPHRASE

Cuando esté satisfecho con el guión, se puede guardar y cerrar el archivo. También vamos a establecer permisos para asegurar que sólo nuestro usuario actual no sudo tendrá la capacidad de leer, escribir y ejecutar el archivo:

chmod 0700 ~/.duplicity/.backup.sh

  • chmod 0700 ~ / .duplicity / .backup.sh

Por último, podemos automatizar nuestro programa de copia de seguridad mediante la edición del archivo crontab de nuestros usuarios. Abrir este archivo para la edición escribiendo:

crontab -e

  • crontab -e

Debido a que esta es la primera vez que la edición de este archivo, se nos pedirá elegir un editor:

no crontab for root - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/ed
2. /bin
ano <---- easiest 3. /usr/bin/vim.basic 4. /usr/bin/vim.tiny Choose 1-4 [2]: ...

Puede seleccionar 2 para nano, o entrar en el número correspondiente al editor de su elección.

En la parte inferior del archivo, vamos a añadir una línea para especificar la frecuencia nuestro script se debe ejecutar. Para probar su funcionalidad, podemos establecer nuestra intervalo de tiempo de dos minutos de la siguiente manera:

...

*/2 * * * * /home/sammy/.duplicity/.backup.sh

Guardar y cerrar el archivo. Después de dos minutos, se puede navegar a la página de los espacios en el panel de control digitalocean, donde debería ver los archivos de copia de seguridad incremental. Ahora puede modificar el archivo crontab para especificar el intervalo de tiempo que desea utilizar para sus copias de seguridad incrementales.

Conclusión

En este tutorial, hemos cubierto cómo hacer una copia de seguridad del contenido de un directorio específico en un repositorio espacios. El uso de un archivo de configuración para almacenar nuestra información del repositorio, hemos creado una copia de seguridad manual de nuestros datos, que hemos probado mediante la restauración de un archivo de ejemplo, y un programa de copia de seguridad automatizada.

Para obtener más información acerca de la duplicidad, se puede revisar la página web del proyecto, así como la página del manual de duplicidad. Esta documentación abarca múltiples aspectos de la duplicidad, y ofrece orientación sobre la creación de copias de seguridad completas del sistema.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *