LINUX

Borg – Herramienta de copia de seguridad de Linux con deduplicación, compresión y cifrado

borg - herramienta de copia de seguridad de linux

Borg Backup (también conocido como Borg) es un programa de copia de seguridad de deduplicación que admite compresión y cifrado autenticado. El objetivo principal de Borg es proporcionar una forma eficiente y segura de realizar copias de seguridad de datos. La técnica de deduplicación de datos utilizada en la copia de seguridad de Borg la hace adecuada para las copias de seguridad diarias, ya que solo se almacenan los cambios y la técnica de cifrado autenticado la hace adecuada para las copias de seguridad de objetivos que no son totalmente confiables. Este artículo cubre la instalación y el uso de Borg Backup en Ubuntu 16 y otras versiones de Linux.

Características principales de Borg Backup

Almacenamiento eficiente en el espacio

→ La deduplicación se basa en la fragmentación definida por el contenido que se utiliza para reducir la cantidad de bytes almacenados. Cada archivo se divide en varios fragmentos de longitud variable y solo se agregan al repositorio fragmentos que nunca se han visto antes.

→ Para deduplicar, se consideran todos los fragmentos en el mismo repositorio, sin importar si provienen de diferentes máquinas, de copias de seguridad anteriores, de la misma copia de seguridad o incluso del mismo archivo único.

→ En comparación con otros enfoques de deduplicación, el método utilizado en borg NO depende de

• Los nombres de archivos / directorios permanecen iguales: para que pueda mover archivos y directorios sin eliminar la deduplicación, incluso entre máquinas que comparten un repositorio.
• Los archivos completos o las marcas de tiempo permanecen iguales: si un archivo grande cambia un poco, solo es necesario almacenar algunos fragmentos nuevos; esto es excelente para máquinas virtuales o discos sin formato.
• La posición absoluta de un fragmento de datos dentro de un archivo: las cosas pueden desplazarse y el algoritmo de deduplicación aún las encontrará.

Velocidad

• El código de rendimiento crítico (fragmentación, compresión, cifrado) se implementa en C / Cython
• Almacenamiento en caché local de archivos / fragmentos de datos de índice
• Detección rápida de archivos no modificados

Cifrado de datos

→ Todos los datos se pueden proteger mediante cifrado AES de 256 bits, la integridad y autenticidad de los datos se verifica mediante HMAC-SHA256. Los datos se cifran en el lado del cliente.

Compresión

→ Todos los datos se pueden comprimir con lz4 (superrápido, baja compresión), zlib (velocidad media y compresión) o lzma (baja velocidad, alta compresión).

Copias de seguridad fuera del sitio

→ Borg puede almacenar datos en cualquier host remoto accesible a través de SSH. Si Borg está instalado en el host remoto, se pueden lograr grandes ganancias de rendimiento en comparación con el uso de un sistema de archivos de red (sshfs, nfs, …).

Copias de seguridad montables como sistemas de archivos

→ Los archivos de copia de seguridad se pueden montar como sistemas de archivos de espacio de usuario para facilitar el examen y la restauración interactivos de las copias de seguridad (por ejemplo, mediante el uso de un administrador de archivos normal).

Fácil instalación en múltiples plataformas

→ Ofrecemos binarios de un solo archivo que no requieren la instalación de nada; simplemente puede ejecutarlos en estas plataformas:

• Linux
• Mac OS X
• FreeBSD
• OpenBSD y NetBSD (todavía no hay soporte para xattrs / ACL o binarios)
• Cygwin (no compatible, aún no hay binarios)
• Subsistema Linux de Windows 10 (no compatible)

Software gratuito y de código abierto

• La seguridad y la funcionalidad se pueden auditar de forma independiente
• Con licencia bajo la licencia BSD (3 cláusulas), consulte Licencia para obtener la licencia completa

Instalar Borg

Para instalar la copia de seguridad de Borg en Ubuntu 16, ejecute el siguiente comando en la terminal.

# sudo apt-get install borgbackup borgbackup-doc

También puede descargar borg binary desde github y muévalo a una ubicación señalada por la variable de entorno PATH.

# wget https://github.com/borgbackup/borg/releases/download/1.0.10/borg-linux64
# mv borg-linux64 /usr/local/bin/borg
# chmod u+x /usr/local/bin/borg
# chown root:root /usr/local/bin/borg

Usos de Borg

Borg consta de varios comandos. Cada comando acepta varios argumentos y opciones. Las siguientes secciones describirán cada comando en detalle.

borg init

Inicialice un nuevo repositorio de respaldo y cree un archivo de respaldo.

# Local repository (default is to use encryption in repokey mode)
$ borg init /path/to/repo

# Local repository (no encryption)
$ borg init --encryption=none /path/to/repo

# Remote repository (accesses a remote borg via ssh)
$ borg init user@hostname:backup

# Remote repository (store the key your home dir)
$ borg init --encryption=keyfile user@hostname:backup

Utilice el cifrado, ya que lo protegerá en caso de que un usuario no autorizado tenga acceso al depósito de respaldo.

borg crear

Este comando crea un archivo de copia de seguridad borg que contiene todos los archivos encontrados mientras recorre de forma recursiva todas las rutas especificadas. Al dar ‘-‘ como ruta, borg leerá los datos de la entrada estándar y creará un archivo ‘stdin’ en el archivo creado a partir de esos datos. El archivo no consumirá casi ningún espacio en disco para archivos o partes de archivos que ya se han almacenado en otros archivos.

# Backup ~/Documents into an archive named "my-documents"
$ borg create /path/to/repo::my-documents ~/Documents

# same, but verbosely list all files as we process them
$ borg create -v --list /path/to/repo::my-documents ~/Documents

# Backup ~/Documents and ~/src but exclude pyc files
$ borg create /path/to/repo::my-files 
~/Documents                       
~/src                             
--exclude '*.pyc'

# Backup home directories excluding image thumbnails (i.e. only
# /home/*/.thumbnails is excluded, not /home/*/*/.thumbnails)
$ borg create /path/to/repo::my-files /home 
--exclude 're:^/home/[^/]+/.thumbnails/'

# Do the same using a shell-style pattern
$ borg create /path/to/repo::my-files /home 
--exclude 'sh:/home/*/.thumbnails'

# Backup the root filesystem into an archive named "root-YYYY-MM-DD"
# use zlib compression (good, but slow) - default is no compression
$ borg create -C zlib,6 /path/to/repo::root-{now:%Y-%m-%d} / --one-file-system

# Make a big effort in fine granular deduplication (big chunk management
# overhead, needs a lot of RAM and disk space, see formula in internals
# docs - same parameters as borg < 1.0 or attic):
$ borg create --chunker-params 10,23,16,4095 /path/to/repo::small /smallstuff

# Backup a raw device (must not be active/in use/mounted at that time)
$ dd if=/dev/sdx bs=10M | borg create /path/to/repo::my-sdx -

# No compression (default)
$ borg create /path/to/repo::arch ~

# Super fast, low compression
$ borg create --compression lz4 /path/to/repo::arch ~

# Less fast, higher compression (N = 0..9)
$ borg create --compression zlib,N /path/to/repo::arch ~

# Even slower, even higher compression (N = 0..9)
$ borg create --compression lzma,N /path/to/repo::arch ~

# Use short hostname, user name and current time in archive name
$ borg create /path/to/repo::{hostname}-{user}-{now} ~
# Similar, use the same datetime format as borg 1.1 will have as default
$ borg create /path/to/repo::{hostname}-{user}-{now:%Y-%m-%dT%H:%M:%S} ~
# As above, but add nanoseconds
$ borg create /path/to/repo::{hostname}-{user}-{now:%Y-%m-%dT%H:%M:%S.%f} ~

extracto de borg

Este comando extrae el contenido de un archivo y lo escribe en el directorio actual.

# Extract entire archive
$ borg extract /path/to/repo::my-files

# Extract entire archive and list files while processing
$ borg extract -v --list /path/to/repo::my-files

# Extract the "src" directory
$ borg extract /path/to/repo::my-files home/USERNAME/src

# Extract the "src" directory but exclude object files
$ borg extract /path/to/repo::my-files home/USERNAME/src --exclude '*.o'

# Restore a raw device (must not be active/in use/mounted at that time)
$ borg extract --stdout /path/to/repo::my-sdx | dd of=/dev/sdx bs=10M

cheque borg

El comando check verifica la consistencia de un repositorio y los archivos correspondientes.

# check for corrupt chunks / segments:
borg check -v --repository-only REPO
# repair the repo:
borg check -v --repository-only --repair REPO
# make sure everything is fixed:
borg check -v --repository-only REPO

borg renombrar

Este comando cambia el nombre de un archivo en el repositorio.

$ borg create /path/to/repo::archivename ~
$ borg list /path/to/repo
archivename                          Mon, 2017-03-06 19:50:19

$ borg rename /path/to/repo::archivename newname
$ borg list /path/to/repo
newname                              Mon, 2017-03-06 19:52:19

lista de borg

Este comando enumera el contenido de un repositorio o un archivo.

$ borg list /path/to/repository
$ borg list /path/to/repo::root-2017-03-06
$ borg list /path/to/repo::archiveA --list-format="{mode} {user:6} {group:6} {size:8d} {isomtime} {path}{extra}{NEWLINE}"
# see what is changed between archives, based on file modification time, size and file path
$ borg list /path/to/repo::archiveA --list-format="{mtime:%s}{TAB}{size}{TAB}{path}{LF}" |sort -n > /tmp/list.archiveA
$ borg list /path/to/repo::archiveB --list-format="{mtime:%s}{TAB}{size}{TAB}{path}{LF}" |sort -n > /tmp/list.archiveB
$ diff -y /tmp/list.archiveA /tmp/list.archiveB

borg eliminar

Este comando elimina un archivo del repositorio o del repositorio completo. El espacio en disco se recupera en consecuencia. Si elimina el repositorio completo, también se elimina la caché local (si corresponde).

# delete a single backup archive:
$ borg delete /path/to/repo::Monday

# delete the whole repository and the related local cache:
$ borg delete /path/to/repo
You requested to completely DELETE the repository *including* all archives it contains:
repo                                 Mon, 2017-03-06 19:26:54
root-2017-03-06                      Mon, 2017-03-06 19:50:29
newname                              Mon, 2017-03-06 19:52:19
Type 'YES' if you understand this and want to continue: YES

ciruela borg

El comando prune poda un repositorio eliminando todos los archivos que no coinciden con ninguna de las opciones de retención especificadas. Este comando lo utilizan normalmente los scripts de copia de seguridad automatizados que desean mantener una cierta cantidad de copias de seguridad históricas de borg.

# Keep 7 end of day and 4 additional end of week archives.
# Do a dry-run without actually deleting anything.
$ borg prune -v --list --dry-run --keep-daily=7 --keep-weekly=4 /path/to/repo

# Same as above but only apply to archive names starting with the hostname
# of the machine followed by a "-" character:
$ borg prune -v --list --keep-daily=7 --keep-weekly=4 --prefix='{hostname}-' /path/to/repo

# Keep 7 end of day, 4 additional end of week archives,
# and an end of month archive for every month:
$ borg prune -v --list --keep-daily=7 --keep-weekly=4 --keep-monthly=-1 /path/to/repo

# Keep all backups in the last 10 days, 4 additional end of week archives,
# and an end of month archive for every month:
$ borg prune -v --list --keep-within=10d --keep-weekly=4 --keep-monthly=-1 /path/to/repo

información borg

Este comando muestra información detallada sobre el archivo especificado.

$ borg info /path/to/repo::root-2017-03-06

montaje borg

Este comando monta un archivo como un sistema de archivos FUSE. Esto puede resultar útil para explorar un archivo o restaurar archivos individuales.

$ borg mount /path/to/repo::root-2017-03-06 /tmp/mymountpoint
$ ls /tmp/mymountpoint

borg umount

Este comando desmonta un sistema de archivos FUSE que se montó con borg mount.

$ borg umount /tmp/mymountpoint

exportación de clave borg

Si se utiliza el cifrado del repositorio, el repositorio es inaccesible sin la clave. Este comando permite hacer una copia de seguridad de esta clave esencial.

$ borg key export /path/to/repo /path/to/export

importación de clave borg

Este comando permite restaurar una clave previamente respaldada con el comando de exportación.

$ borg key import /path/to/repo /path/to/import

borg cambiar-contraseña

Los archivos de claves utilizados para el cifrado del repositorio están opcionalmente protegidos con contraseña. Este comando se puede utilizar para cambiar esta frase de contraseña.

# Create a key file protected repository
$ borg init --encryption=keyfile -v /path/to/repo
Initializing repository at "/path/to/repo"
Enter new passphrase:
Enter same passphrase again:
Remember your passphrase. Your data will be inaccessible without it.
Key in "/root/.config/borg/keys/mnt_backup" created.
Keep this key safe. Your data will be inaccessible without it.
Synchronizing chunks cache...
Archives: 0, w/ cached Idx: 0, w/ outdated Idx: 0, w/o cached Idx: 0.
Done.

# Change key file passphrase
$ borg change-passphrase -v /path/to/repo
Enter passphrase for key /root/.config/borg/keys/mnt_backup:
Enter new passphrase:
Enter same passphrase again:
Remember your passphrase. Your data will be inaccessible without it.
Key updated

servir borg

Este comando inicia un proceso de servidor de repositorio. Este comando generalmente no se usa manualmente.

# Allow an SSH keypair to only run borg, and only have access to /path/to/repo.
# Use key options to disable unneeded and potentially dangerous SSH functionality.
# This will help to secure an automated remote backup system.
$ cat ~/.ssh/authorized_keys
command="borg serve --restrict-to-path /path/to/repo",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-user-rc ssh-rsa AAAAB3[...]

actualización de borg

Actualice un repositorio de respaldo de Borg existente.

$ borg upgrade --tam REPO

bloqueo de rotura de borg

Este comando rompe el repositorio y los bloqueos de la caché. Úselo con cuidado y solo cuando ningún proceso de borg (en ninguna máquina) esté intentando acceder al Caché o al Repositorio.

$ borg break-lock /path/to/repo

Conclusión

Borg está escrito en Python y tiene muchas ventajas sobre otras soluciones de copia de seguridad clásicas. La deduplicación y el cifrado de datos son las dos características. La mayoría de las distribuciones de Linux ya lo tienen en su repositorio oficial. La configuración en el Backup-Server es simple ya que los clientes se conectan al servidor mediante SSH. Por lo tanto, es posible que desee configurar un solo usuario de borg y restringir un poco los clientes.

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba
Cerrar