Como realizar backups en Storj.io con restic

2024-05-06

Índice

  1. Creando el bucket
  2. Permisos
  3. Configurando rclone
  4. Inicializar repositorio
  5. Realizar backup

Storj.io es un servicio en la nube descentralizado y compatible con S3, todos los datos están cifrados de extremo a extremo y se dividen y distribuyen entre multitud de nodos de todo el mundo.

Empece a utilizar Storj.io cuando ofrecían 150 GB de almacenamiento de forma gratuita, pero recientemente han cambiado de forma brusca su política ya que, en el momento de de escribir esta publicación tan sólo ofrecen 30 días de prueba gratuita.

🗨️ De todas formas si utilizas un almacenamiento en la nube basado en S3, esta publicación también te puede servir

Un plus es que tiene integración con FileZilla.

Creando el bucket

Debemos de crear un bucket donde inicializar el respositorio para restic

img

Permisos

Creado el bucket debemos de crear las credenciales de acceso para el bucket

img

Elegimos el tipo permiso y un nombre

img

Seleccionamos los privilegios del acceso que estamos creando y al bucket que le va a se aplicados, por ejemplo al bucket que hemos creado anteriormente fotos

img

Podemos utilizar la misma contraseña para crear la contraseña de cifrado o cambiarla por otra, yo he dejado la misma

img

Repasamos y confirmamos

img

Una vez creado el acceso es importante copiar o descargar y guardar en un sitio seguro la contraseña ya que si la perdemos tendremos que volver a generar una nueva, no se puede recuperar

img

img

Configurando rclone

Creados el bucket y las credenciales de acceso, debemos de configurar rclone para poder utilizar la nube de Storj.io

Iniciamos el menú de configuración, seleccionamos la opción n pra crear un nuevo acceso remoto y elegimos un nombre para el nuevo acceso, por ejemplo storj

    rclone config
    
    2023/09/28 10:40:42 NOTICE: Config file "/root/.config/rclone/rclone.conf" not found - using defaults
    No remotes found, make a new one?
    n) New remote
    s) Set configuration password
    q) Quit config
    n/s/q> n
    
    Enter name for new remote.
    name> storj

Seleccionamos la opción Storj del menú

Option Storage.
    Type of storage to configure.
    Choose a number from below, or type in your own value.
     1 / 1Fichier
       \ (fichier)
     2 / Akamai NetStorage
       \ (netstorage)
        .........
        .........
        .........
    40 / Sia Decentralized Cloud
       \ (sia)
    41 / Storj Decentralized Cloud Storage
       \ (storj)
        .........
        .........
        .........
    50 / seafile
       \ (seafile)
    Storage> 41

Como vamos a utilizar las credenciales de un acceso creadas anteriormente seleccionamos 1, e introducimos su clave.

Option provider.
    Choose an authentication method.
    Choose a number from below, or type in your own string value.
    Press Enter for the default (existing).
     1 / Use an existing access grant.
       \ (existing)
     2 / Create a new access grant from satellite address, API key, and passphrase.
       \ (new)
    provider> 1
    
    Option access_grant.
    Access grant.
    Enter a value. Press Enter to leave empty.
    access_grant> 12rUNVxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxasdfasdftytr
    
    Configuration complete.
    Options:
    - type: storj
    - access_grant: 12rUNVxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxasdfasdftytr

Finalizamos la configuración pulsando y

    Keep this "storj" remote?
    y) Yes this is OK (default)
    e) Edit this remote
    d) Delete this remote
    y/e/d> y
    
    Current remotes:
    
    Name                 Type
    ====                 ====
    storj                storj

Comprobamos que tenemos acceso al bucket

    rclone lsf storj:
    
    fotos/
    videos/

Inicializar repositorio

Ahora que tenemos acceso al bucket, inicializamos el repositorio para restic

    restic -r rclone:storj:fotos init
    
    enter password for new repository:
    enter password again:
    created restic repository 2433aded8e at rclone:storj:fotos
    
    Please note that knowledge of your password is required to access
    the repository. Losing your password means that your data is
    irrecoverably lost.

Realizar backup

Con todo configurado ya podemos empezar a realizar los backups, el formato seria

    restic --repo rclone:storj:fotos/ backup ~/directory-to-backup --pack-size=60

Por ejemplo

    restic -r rclone:storj:fotos --password-file /mnt/user/datos/scripts/pass.txt backup --tag fotos -v --files-from /mnt/user/datos/scripts/fotos_to_backup.txt
    
    open repository
    repository 2433aded opened (version 2, compression level auto)
    created new cache in /root/.cache/restic
    lock repository
    using parent snapshot a6cf782b
    load index files
    start scan on [/mnt/user/shared_media/media/fotografias/]
    start backup on [/mnt/user/shared_media/media/fotografias/]
    scan finished in 2.921s: 10255 files, 49.252 GiB
    
    Files:           0 new,     0 changed, 10255 unmodified
    Dirs:            0 new,     4 changed,   251 unmodified
    Data Blobs:      0 new
    Tree Blobs:      4 new
    Added to the repository: 1.547 KiB (1.263 KiB stored)
    
    processed 10255 files, 49.252 GiB in 0:05
    snapshot 673ea342 saved

Haciendo uso de restic también podamos ejecutar el versionado en la copia en Storj.io

    restic -r rclone:storj:fotos  --password-file /mnt/user/datos/scripts/pass.txt forget --keep-daily 7 --keep-weekly 5 --keep-monthly 12 --prune
    
    repository 2433aded opened (version 2, compression level auto)
    Applying Policy: keep 7 daily, 5 weekly, 12 monthly snapshots
    keep 7 snapshots:
    ID        Time                 Host        Tags        Reasons           Paths
    -----------------------------------------------------------------------------------------------------------------
    6f83717e  2023-09-29 04:40:16  Nas01       fotos       daily snapshot    /mnt/user/shared_media/media/fotografias
    6e411ab0  2023-09-30 04:40:07  Nas01       fotos       daily snapshot    /mnt/user/shared_media/media/fotografias
                                                           monthly snapshot
    962433f5  2023-10-01 04:40:07  Nas01       fotos       daily snapshot    /mnt/user/shared_media/media/fotografias
                                                           weekly snapshot
    9fe5664f  2023-10-02 04:40:17  Nas01       fotos       daily snapshot    /mnt/user/shared_media/media/fotografias
    1c79dbd5  2023-10-03 04:40:07  Nas01       fotos       daily snapshot    /mnt/user/shared_media/media/fotografias
    a6cf782b  2023-10-04 04:40:07  Nas01       fotos       daily snapshot    /mnt/user/shared_media/media/fotografias
    673ea342  2023-10-06 00:16:16  Nas01       fotos       daily snapshot    /mnt/user/shared_media/media/fotografias
                                                           weekly snapshot
                                                           monthly snapshot
    -----------------------------------------------------------------------------------------------------------------
    7 snapshots
    
    remove 1 snapshots:
    ID        Time                 Host        Tags        Paths
    -----------------------------------------------------------------------------------------------
    3c540656  2023-09-28 18:19:29  Nas01       fotos       /mnt/user/shared_media/media/fotografias
    -----------------------------------------------------------------------------------------------
    1 snapshots
    
    [0:00] 100.00%  1 / 1 files deleted
    1 snapshots have been removed, running prune
    loading indexes...
    loading all snapshots...
    finding data that is still in use for 7 snapshots
    [0:01] 100.00%  7 / 7 snapshots
    searching used packs...
    collecting packs for deletion and repacking
    [0:00] 100.00%  2976 / 2976 packs processed
    
    to repack:           256 blobs / 1.880 MiB
    this removes:          4 blobs / 1.104 KiB
    to delete:             0 blobs / 0 B
    total prune:           4 blobs / 1.104 KiB
    remaining:         43667 blobs / 48.913 GiB
    unused size after prune: 0 B (0.00% of remaining size)
    
    repacking packs
    [0:01] 100.00%  1 / 1 packs repacked
    rebuilding index
    [0:01] 100.00%  2976 / 2976 packs processed
    deleting obsolete index files
    [0:00] 100.00%  12 / 12 files deleted
    removing 1 old packs
    [0:00] 100.00%  1 / 1 files deleted
    done

Espero que te haya gustado, pasa un gran día 🐧

Referencia


Ingrese la dirección de su instancia