Comment GitLab aide Ă  sauvegarder les grands magasins NextCloud

Bonjour, Habr!



Aujourd'hui, je souhaite partager notre expérience dans l'automatisation des sauvegardes Big Data des stockages Nextcloud dans différentes configurations. Je travaille en tant que station-service à Molniya AK, où nous sommes engagés dans la gestion de la configuration des systèmes informatiques, Nextcloud est utilisé pour le stockage des données. Y compris, avec une structure distribuée, avec redondance.



Les problèmes posés par les particularités des installations sont qu'il y a beaucoup de données. La gestion des versions fournie par Nextcloud, la redondance, les raisons subjectives, etc. créent de nombreux doublons.



Contexte



Lors de l'administration de Nextcloud, il existe un problème aigu d'organisation d'une sauvegarde efficace qui doit être cryptée, car les données sont précieuses.



Nous offrons des options pour stocker une sauvegarde sur nos propres ou sur les machines d'un client distinct de Nextcloud, ce qui nécessite une approche automatisée flexible de l'administration.



Les clients sont nombreux, tous avec des configurations différentes, et tous sur leurs sites et avec leurs propres caractéristiques. Ici, la méthodologie standard lorsque l'ensemble du site vous appartient et que les sauvegardes sont effectuées à partir de la couronne s'adapte mal.



Tout d'abord, regardons les données d'entrée. Nous avons besoin:



  • . minio.
  • .
  • / .
  • .
  • — .
  • : (), — .
  • .




GitLab. .



, , .



opensource, . , . , GitHub Nextcloud, , .





.



tar + gzip — . , .

— . minio . minio – , , -. .



( ) Borg Restic. , .





Borg Restic , . , , — CI/CD – GitLab.



: Nextcloud gitlab-runner. , Borg Restic.



? , , .



GitHub , Nextcloud, . , ( ) .gitlab-ci.yml



API CI/CD, . , 1d.



GitLab , , .



-.



:



  • , .
  • :
  • return code.
  • . , .
  • timeout. .
  • . .
  • .
  • , :
  • . .
  • , , stdout, . CI .
  • .


GitLab, , . bash.



— welcome.





. job CI/CD. , , , . S3.



— AWS ( ). minio . , .



ssh . , S3 ssh .



— S3, .

.



Borg none, . , , , .



. , . .







  • prepare
  • testcheck
  • maincommand
  • forcepostscript . .


Service functions



  • cleanup .
  • checklog .
  • ret exit handler.
  • checktimeout .


Environment



  • VERBOSE=1 (stdout).
  • SAVELOGSONSUCCES=1 .
  • INIT_REPO_IF_NOT_EXIST=1 , . - .
  • TIMEOUT . You can set it as 'm', 'h' or 'd' at the end.


. -:



  • KEEP_DAILY=7
  • KEEP_WEEKLY=4
  • KEEP_MONTHLY=6




  • ERROR_STRING — string for the check in log for error.
  • EXTRACT_ERROR_STRING — expression for show string if error.
  • KILL_TIMEOUT_SIGNAL — signal for killing if timeout.
  • TAIL — how many strings with errors on screen.
  • COLORMSG — color of mesage (default yellow).


, wordpress , , mysql. Nexcloud, . , , , .



Restic vs Borg



Borg Restic , , . , . .



, (, .):



  • . kill -9.
  • .
  • (, ).
  • .
  • S3.
  • .


1,6.

.



Borg S3, fuse , goofys. Restic S3 .



Goofys , , . beta, , , (). , , , .



, — .



.



  • Kill -9 .
  • . Borg .


Backuper
Borg 562Gb
Restic 628Gb


  • CPU

    borg , , goofys. 1,2 .
  • . Restic 0,5, Borg 200. . .
  • .


Backuper
Borg 500
Restic 5


  • S3 Restic . Borg goofys , , umount . S3 , , .
  • , .

    Restic – 3,5 .

    Borg, 100 SSD – 5 . .

    Borg S3 33 . .


Borg — GET/PUT S3. . — . ( ) restic , .



.



borg.





Borg’ — zstd. gzip, . lz4.



MySQL lz4 . , , Nextcloud .



Borg — , , .

-C auto,zstd

zstd

-

560Gb 562Gb . , , 628Gb. 2 , - auto,zstd.





, . , .



goofys --cache "--free:5%:/mnt/cache" -o allow_other --endpoint https://storage.yandexcloud.net --file-mode=0666 --dir-mode=0777 xxxxxxx.com /mnt/goofys
export BORG_PASSCOMMAND="cat /home/borg/.borg-passphrase"
borg list /mnt/goofys/borg1/
borg check --debug -p --verify-data /mnt/goofys/borg1/


(). Nextcloud . , .



.

API GitLab , , .





, , . tar.gz Bacula.




All Articles