Bacula Storage en Cualquier Nube con Rclone y Rclone-changer

*Actualizado con fork del rclone-changer compatible con Python 3.5 y superior para evitar fallas en la creación de volúmenes con la etiqueta barcodes.

Este instructivo objetiva establecer un dispositivo de Storage Bacula en el nuvem, utilizando rclone ( https://rclone.org/ ) y el script rclone-changer (https://github.com/wanderleihuttel/rclone-changer). Último, presenta fitas virtuales almacenados en la nube como una especie de VTL para el Bacula. Se utilizó al servicio Amazon S3 en este manual, pero tenemos observaciones de funcionamiento Oracle Cloud y Google Drive. Debe funcionar también en el todo storage de nube informados por el rclone: Amazon Drive, Amazon S3, Backblaze B2, Box, Ceph, Dreamhost, Dropbox, FTP Google Cloud Storage, Google Drive, HTTP, Hubic, Memset Memstore, Microsoft Azure Blob Storage, Microsoft OneDrive, Minium, OVH, Openstack Swift, Oracle Cloud Storage, QingStor, Rackspace Cloud Files, SFTP, Wasabi, Yandex Disk y sistemas de archivos locales.

Funciones del Rclone:

  • Hashes MD5/SHA1 comprobados el tiempo todo para comprobación de integridad del arquivo
  • Timestamps preservados en arquivos
  • Sincronismos parciales soportadas en el todo arquivo
  • Modo de copia para que copien simplemente nuevos archivos/alterados
  • Modo de sincronización (última) para hacer un comité de dirección idêntico
  • Modo de comprobación para comprobar la igualdad del archivo hash
  • Pode sincronizar y para la red, por ejemplo, dos cuentas de la nube diferentes
  • Criptografia facultative (Crypt)
  • Montagem FUSE facultativa (rclone mount)

Instalação y Configuración de Rclone

Como root, basta con realizar los siguientes comandos:

yum -y install unzip wget
wget -qO- https://downloads.rclone.org/rclone-current-linux-amd64.zip -O /tmp/tmp.zip; unzip /tmp/tmp.zip -d /usr/src; rm -f /tmp/tmp.zip
cd /usr/src/rclone-v*
cp rclone /usr/bin/
chown root:root /usr/bin/rclone
chmod 755 /usr/bin/rclone
mkdir -p /usr/local/share/man/man1
cp rclone.1 /usr/local/share/man/man1/
mandb

Ahora es hora de acceder su almacenamiento nube y a buscar credenciales de acceso
programático.

Ya que estoy usando Amazon S3, debo acceder por la consola AWS el servicio de definición IAM, crear y el usuario, conceder direitos para que el servicio S3 y produzca una clave de acceso y un secreto (Access Key ÍDEM y Secreto key). Los copia para un bloque de notas, por lo tanto tendremos necesidad a continuación para configurar el a Rclone. Estas etapas se muestran en las siguientes capturas de pantalla:

Bacula Storage en Cualquier Nube con Rclone y Rclone-changer 1 Bacula Storage en Cualquier Nube con Rclone y Rclone-changer 2 Bacula Storage en Cualquier Nube con Rclone y Rclone-changer 3

Para generar la configuración de rclone, utilice el siguiente comando como root:

rclone config

Siga las instrucciones detalladas de documentación del rclone para configurar el almacenamiento de nube favorito: https://rclone.org/docs/

Después de proporcionar un nombre para este acceso y para responder a todas las demás cuestiones suplementarias, la configuración del rclone salvará la configuración en: /root/.config/rclone/rclone.conf

En mi ejemplo, aws era el nombre de mi configuración distante y esta era a salida:

[aws]
env_auth = true
access_key_id = AKIAIFTEYM3JK5VUXGBA
secret_access_key = hjqF6wG/tNBqgpBbwBmQ3EQpok5U33W2ewSXD
region = sa-east-1 
endpoint = 
location_constraint = 
acl = private
server_side_encryption = 
storage_class =

Es muy importante acceder acceso rclone a la nube. Realiza algunos comandos de prueba de la siguiente
manera:

# Enumerar buckets:
rclone lsd aws:
root@hfaria-asus-i5:/# rclone lsd aws:
          -1 2014-10-01 20:27:41        -1 baculaheitor

# Si no existe, crea un bucket:
rclone mkdir aws:new_bucket_name

# Lista de contenido de un bucket:
rclone ls aws:baculaheitor

  6311 logs/2014-10-02-01-17-25-7F0DBBBFD43A20B7
     2721 logs/2014-10-02-01-17-31-BFC439050C2B0AA9
      666 logs/2014-10-02-02-17-36-D47447EC8F6759EE
     2079 logs/2014-10-02-02-17-47-24DD21E3B85C5CAF
    40108 logs/2014-10-02-03-17-10-4E9B7A829CEC7842

# Prueba la copia de un directorio a un bucket:
rclone copy /etc aws:baculaheitor

# Prueba la copia de un directorio desde el bucket:
rclone copy aws:baculaheitor /tmp

Por último, copie la versión de la configuración funcional para el camino que el troqueur de rclone espera, de la siguiente manera:

cp ~/.config/rclone/rclone.conf /opt/bacula/etc/rclone.conf
chown bacula /opt/bacula/etc/rclone.conf

É hora de implantar o rclone-changer.

Instalação y Configuración de Rclone-changer

Instale las dependencias python y python-yaml:

apt install -y python python-yaml
# ó 
yum install -y python python-yaml

Descargue el rclone-changer y cree carpetas necesarias:

wget https://github.com/wanderleihuttel/rclone-changer/archive/master.zip -O /tmp/tmp.zip; unzip /tmp/tmp.zip -d /usr/src; rm -f /tmp/tmp.zip
cp /usr/src/rclone-changer-master/rclone-changer /usr/sbin/
chmod +rx /usr/sbin/rclone-changer
chown bacula /opt/bacula/working

A continuación, cree la carpeta y el archivo que alojan la grabación de cinta virtual. Cree también un directorio para la cola local de disco de Bacula, ya que se recomienda realizar copias de seguridad más rápidas y una copia más segura de la nube de la siguiente manera:

mkdir /mnt/vtapes && touch /mnt/vtapes/tape && chown -R bacula /mnt/vtapes/
mkdir /mnt/bacula-spool && chown bacula /mnt/bacula-spool

Añade a un dispositivo similar al archivo Bacula Storage Daemon Configuración (bacula-sd.conf):

Autochanger {
  Name = "rclone_aws"
  Device = aws
  Changer Device = 'aws:baculaheitor' # configuración remota del rclone y bucket de grabación. También puede especificar un directorio en el bucket
  Changer Command = "/usr/sbin/rclone-changer %c %o %S %a" # não mude isso
}

Device {
  Name = aws
  Media Type = aws
  Maximum Changer Wait = 18000 # puede ser necesario cambiar de acuerdo con la dimensión volúmenes 
  Archive Device = /mnt/vtapes/tape # debe coincidir con el archivo creado en el paso anterior
  Autochanger = yes
  LabelMedia = yes;                  
  Random Access = Yes
  AutomaticMount = no             
  RemovableMedia = no
  AlwaysOpen = no
  Spool Directory = /mnt/bacula-spool
  Maximum Spool Size = 524288000
}

Ahora, amarra el nuevo dispositivo Storage Daemon a su Director y también le crea un Grupo para:

Autochanger {
  Name = Cloud_aws
  Address = sd_address                
  SDPort = 9103
  Password = "EKPNGPoIe7wXO/oe6xwm9cXzHDgmiuS0qF3hyAhpEg+i"
  Device = rclone_aws
  Media Type = aws
  Autochanger = Cloud_aws            
  Maximum Concurrent Jobs = 10       
}

Pool {
  Name = Offsite
  Pool Type = Backup
  Recycle = yes                       
  AutoPrune = yes                    
  Storage = Cloud_aws
  Maximum Volume Bytes = 1073741824 # recomendado
  AutoPrune = yes
  Volume Retention = 4 weeks
}

Es importante tener en cuenta las consideraciones del desarrollador si desea cambiar la directiva Maximum Volume Bytes:

Recomenda que ti utiliza muchos grandes pequeños volúmenes al lugar. Intenta permanecer en una dimensión que su archivo medio se ingriesa sin ser muy pequeño. El razonamiento aquí está en una situación de recuperación si ti trabaja en volúmenes que deseas minimizar la cantidad de datos sin informe determinado trabajo de protección que ti preciso copiar localmente para que se recuperen. Si posees una cinta virtual de 10G y necesitas solamente 500M, ti aún tiene necesidad de esperar para que el 10G completo esté reducido antes de ti consiga recuperar datos. Pues, si su dimensión de archivo típica es por término medio 700M, los volúmenes de 1G probablemente son una buena idea. [ https://github.com/travisgroth/rclone-changer ]

Edite y compruebe que la versión del python y los directorios del rclone-changer son correctos y el usuario bacula de Linux tiene permiso para escribir en ellos. Es posible también cambiar el número de ranuras (cintas virtuales) que su robot virtual tendrá.

vi /usr/sbin/rclone-changer

#!/usr/bin/env python
...
    #=====================================================
    # Default params config
    #=====================================================
    rclone     = '/usr/bin/rclone'
    config     = '/opt/bacula/etc/rclone.conf'
    logFile    = '/opt/bacula/working/rclone.log'
    logChanger = '/opt/bacula/working/rclone-changer.log'
    lockFile   = '/opt/bacula/working/.rclonelock'
    stateFile  = '/opt/bacula/working/rclone-changer.state'
    slots      = 100
    #=====================================================

Entonces, crea etiquetas de Bacula de cinta virtual. Utiliza el bconsole para eso:

label barcodes storage=Cloud_aws pool=Offsite

Si tiene problemas para etiquetar las cintas virtuales, comprueba todos los pedidos anteriores y las concesiones de autorización. Para reiniciar VTL e intentar aún, elimina el archivo vtape y rclone-change state.

rm -f /mnt/vtapes/tape*
rm -f /opt/bacula/working/rclone-changer.state
touch /mnt/vtapes/tape && chown -R bacula /mnt/vtapes/

¡Listo! Execute un Trabajo de protección de prueba al Grupo Offsite y crea rutinas del Programa para la nube, de acuerdo con sus necesidades. Las cintas virtuales se modificarán y responsables en la nube automagicamente, como en las siguientes capturas de pantalla:

Bacula Storage en Cualquier Nube con Rclone y Rclone-changer 4 Bacula Storage en Cualquier Nube con Rclone y Rclone-changer 5

Resolução de Problemas do Rclone-changer

Estos son los lugares donde el rclone y el rclone-change guardan sus mensajes de registro:

cat /opt/bacula/working/rclone.log
cat /opt/bacula/working/rclone-changer.log

 

Disponível em: pt-brPortuguês (Portugués, Brasil) esEspañol

Deja un comentario

Cerrar menú