GitLab如何帮助备份大型NextCloud存储

哈Ha!



今天,我想分享一下我们在不同配置下自动执行Nextcloud存储的大数据备份的经验。我在Lightning 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