哈Ha!
今天,我想分享一下我们在不同配置下自动执行Nextcloud存储的大数据备份的经验。我在Lightning AK的服务站工作,在那里我们从事IT系统的配置管理,Nextcloud用于数据存储。包括,具有分布式结构,具有冗余性。
由安装功能引起的问题是存在大量数据。Nextcloud提供的版本控制,冗余,主观原因以及其他原因会创建许多重复项。
背景
在管理Nextcloud时,存在一个严重的问题,即组织有效的备份,必须对其进行加密,因为数据很有价值。
我们提供的选项可以与我们或客户在与Nextcloud分开的计算机上存储备份,这需要灵活的自动化管理方法。
有许多客户端,每个客户端都有不同的配置,并且都在其站点上并具有自己的特征。当整个站点属于您,并且备份是从头开始进行的时,这是标准技术,因此不合适。
首先,让我们看一下输入数据。我们需要:
- 一个或多个节点的可伸缩性。对于大型安装,我们使用minio作为存储。
- 查找有关执行备份的问题。
- 您需要与客户和/或我们保持备份。
- 快速轻松地处理问题。
- 客户和安装彼此之间非常不同-无法实现统一。
- 在两种情况下,恢复速度应该是最小的:完全恢复(灾难),一个文件夹-错误地擦除。
- 强制重复数据删除功能。
为了解决备份管理问题,我们搞砸了GitLab。更滚。
当然,我们并不是第一个解决这种问题的人,但是在我们看来,我们从苦难中获得的实践经验可能会很有趣,我们准备分享。
opensource, . , . , GitHub Nextcloud, , .
.
tar + gzip — . , .
— . minio . minio – , , -. .
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
, (, .):
- . 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.