GitLabが大規模なNextCloudストレージをバックアップする方法

こんにちは、ハブル!



今日は、さまざまな構成でのNextcloudストレージのビッグデータバックアップの自動化における私たちの経験を共有したいと思います。私はMolniya AKのサービスステーションとして働いており、ITシステムの構成管理を行っています。Nextcloudはデータストレージに使用されています。冗長性を備えた分散型構造を含みます。



インストールの機能に起因する問題は、大量のデータがあることです。Nextcloudが提供するバージョン管理、冗長性、主観的な理由などにより、多くの複製が作成されます。



バックグラウンド



Nextcloudを管理する場合、データは貴重であるため、暗号化する必要がある効果的なバックアップを整理するという深刻な問題があります。



当社は、Nextcloudとは別に、独自またはお客様のマシンにバックアップを保存するためのオプションを提供します。これには、管理に対して柔軟な自動化されたアプローチが必要です。



多くの顧客がいて、すべてが異なる構成で、すべてがサイト上にあり、独自の特性を持っています。これは、サイト全体があなたに属しているときの標準的なテクニックであり、クラウンがうまくフィットしないためにバックアップが作成されます。



まず、入力データを見てみましょう。必要なもの:



  • . 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