Duplicity (Español)

Esta traducción de
Duplicity
fue revisada el
2021-02-12
. Si existen
cambios
puede
actualizarla
o avisar al
equipo de traducción
.
Artículos relacionados
Synchronization and backup programs
Duplicity
es un programa de copias de seguridad en red.
Puede guardar instantáneas de directorios y archivos en un archivo tar remoto encriptado con GnuPG, que actúa como repositorio de copias de seguridad.
La conexión con el repositorio remoto puede realizarse a través de cualquiera de los siguientes protocolos: rsync, ftp, HSI, WebDAV, Tahoe-LAFS, o Amazon S3.
Las copias de seguridad son incrementales, lo que significa que sólo se almacenan los cambios en los archivos (desde la última instantánea).
Instalación
Instale
el paquete
duplicity
.
Frontends
Duply
, un frontend de shell, disponible en el
AUR
.
deja-dup
, un frontend fácil de utilizar. Proporciona la herramienta de línea de comandos
deja-dup
y el frontend GTK
deja-dup-preferences
.
Utilización básica
Realizar copias de seguridad
Para realizar una copia de seguridad de la carpeta local
/home/me
a la ubicación remota
/usr/backup
en el host
other.host
a través del protocolo
scp/ssh
, ejecute la orden
duplicity /home/me scp://uid@other.host//usr/backup
La primera vez que se ejecute esta orden, se creará una copia de seguridad completa. Si se vuelve a ejecutar exactamente la misma orden, se creará una copia de seguridad incremental en el repositorio de copias de seguridad existente.
Las opciones adicionales de la línea de comandos permiten:
incluir o excluir archivos y directorios específicos de la copia de seguridad (utilizando patrones de shell o expresiones regulares)
ajustar el cifrado y la firma de las copias de seguridad
Restaurar archivos desde la copia de seguridad
Para restaurar la carpeta local
/home/me
al estado de la última instantánea guardada en el repositorio remoto
/usr/backup
en el host
other.host
, ejecute
duplicity scp://uid@other.host//usr/backup /home/me
Nótese el orden inverso de los argumentos en comparación con el comando de copia de seguridad anterior. El argumento de la URL se trata siempre como el repositorio de la copia de seguridad, y el argumento de la ruta local como el directorio a sincronizar con la copia de seguridad. (Un repositorio local de copias de seguridad debe ser especificado explícitamente usando el prefijo file:// protocol)
Las opciones adicionales de la línea de comandos permiten:
restaurar un archivo específico en lugar de todo el repositorio
restaurar archivos al estado que tenían en una fecha específica, en vez de a la instantánea más reciente disponible
Inspección y mantenimiento del repositorio
Existen algunas opciones adicionales en la línea de comandos para comparar el estado del repositorio con el estado de los archivos locales, y para eliminar instantáneas antiguas de forma que sólo se mantenga una cantidad fija de instantáneas o sólo las que sean más recientes que una fecha determinada.
Véase la página de manual para más detalles.
Ejemplo de script de copia de seguridad
#!/bin/sh
## Remote backup script. Requires duplicity and gpg-agent with the keys and passphrases loaded as root.
## Uses separate encryption and signing keys
## Usage:  'backup_remote.sh'

enc_key=44D79E41
sign_key=F5C978E3
src="/mnt/backup/"
dest="scp://destination.com//backups/homeserver"

# Keychain is used to source the ssh-agent keys when running from a cron job
type -P keychain &>/dev/null || { echo "I require keychain but it's not installed.  Aborting." >&2; exit 1; }
eval `keychain --eval web_rsa` || exit 1
## Note: cannot use keychain for gpg-agent because it does not currently (2.7.1) read in all the keys correctly. 
## Gpg will ask for a passphrase twice for each key...once for encryption/decryption and once for signing. 
## This makes unattended backups impossible, especially when trying to resume an interrupted backup.
if [ -f "${HOME}/.gnupg/gpg-agent-info" ]; then
      . "${HOME}/.gnupg/gpg-agent-info"
      export GPG_AGENT_INFO
fi

duplicity --use-agent \
         --verbosity notice \
         --encrypt-key "$enc_key" \
         --sign-key "$sign_key" \
         --full-if-older-than 60D \
         --num-retries 3 \
         --asynchronous-upload \
         --volsize 100 \
         --archive-dir /root/.cache/duplicity \
         --log-file /var/log/duplicity.log \
         --exclude /mnt/backup/fsarchiver \
         --exclude '**rdiff-backup-data' \
         "$src" "$dest"
Nota
Hay un problema con la versión actual de pinentry (0.8.1-3) que no permite la introducción de la frase de contraseña para un gpg-agent root cuando se inicia sesión como root usando
su
o
sudo
. Si está accediendo a un servidor remoto en el que no se permite (o no se desea) el inicio de sesión directo ssh de root, entonces tiene que o bien
parchear pinentry
o bien hacer
chown root `tty`
antes de iniciarlo. Esto no es problema cuando se ejecuta gpg-agent como un usuario no root.
Nota
Si desea iniciar gpg-agent en el inicio de sesión de root y luego almacenar en caché las frases de contraseña para gpg-agent a su conveniencia, puede añadir estas funciones a su /root/.bashrc:
function gpg_start {
       gnupginf="${HOME}/.gnupg/gpg-agent-info"
       if pgrep -u "${USER}" gpg-agent >/dev/null 2>&1; then
           eval "$(cat $gnupginf)"
           eval "$(cut -d= -f1 < $gnupginf | xargs echo export)"
       else
           eval "$(gpg-agent -s --daemon --write-env-file $gnupginf)"
       fi
}
function keys {
       touch test-gpg.txt
       touch test-gpg.txt1
       gpg -r 'Duplicity Encryption Key' -e test-gpg.txt
       gpg -r 'Duplicity Signature Key' -e test-gpg.txt1
       gpg -u <signing key> --detach-sign test-gpg.txt
       gpg -u <encryption key> --detach-sign test-gpg.txt1
       gpg -d test-gpg.txt.gpg
       gpg -d test-gpg.txt1.gpg
       rm test-gpg.txt*
}
gpg_start
Solución de problemas
Si obtiene errores gpg que mencionan "inappropriate ioctl for device" lo más probable es que tenga que ver con los cambios en el comportamiento del gpg-agent desde la versión 2.1 en adelante. Véase
este hilo
para más información. En general, uno necesita permitir explícitamente que los programas proporcionen la frase de contraseña al gpg-agent en vez de preguntar al usuario.
Los pasos necesarios para remediar este problema se detallan en
GnuPG#Unattended passphrase
.
Véase también
Página web de Duplicity
Wikipedia:Duplicity (software)
Página web de Déjà Dup