完成CloudCone备份服务器的设置

This commit is contained in:
zeaslity
2025-09-03 14:14:19 +08:00
parent b5e802ebc3
commit 9d93a1ee6e
20 changed files with 1434 additions and 98 deletions

View File

@@ -0,0 +1,7 @@
64.69.32.106
购买日期 2026/08/29
购买价格 15美元/年

View File

@@ -0,0 +1,28 @@
需要备份的内容
S5 nextcloud
S5 vault-warden
T0 gitea
你是一名计算机领域的大师,你非常善于应用互联网上成熟的工具和自己编写一些小工具,对于数据安全备份具有深刻的理解。
请为以下的情况创建一套解决方法,只需要解决方案,不需要实际的代码内容
主机A的配置为2C 2GB 120GB用作备份服务器可以安装任何软件
主机B的配置为4C 24GB 100GB 已有docker-compose部署的nextcloud和vault-warden应用nextcloud的信息为版本nextcloud:27.0.1-apache本地映射的目录为/data/nextcloud:/var/www/html使用的数据库为image: mariadb:10.5同样需要备份数据库信息。其备份方法请严格参考https://docs.nextcloud.com/server/latest/admin_manual/maintenance/backup.html
vault-warden的信息为版本image: vaultwarden/server:1.34.3-alpine本地存储目录为/data/vault-warden/persist-data:/data需要备份attachments文件其备份方法请严格参考https://github.com/dani-garcia/vaultwarden/wiki/Backing-up-your-vault
主机C的配置为4C 24GB 100GB 已部署gitea应用gitea的信息为image: docker.io/bitnami/gitea:1.19.3-debian-11-r0,本次存储目录为/var/lib/docker/wdd/gitea/gitea_data:/bitnami/gitea其备份方法请严格参考https://docs.gitea.com/zh-tw/administration/backup-and-restore
主机A B C是三台独立的公网服务器他们之间的网络是互联互通的。
主机A B C之间已经配置使用root用户的免费登录
主机ABC上的业务均使用root用户启动
请给出方案,
1 求B C之上的nextcloud数据按照1周一次备份到C vault-warden数据按照1填一次备份到C gitea的数据按照1周一次备份到C
2 最好采用软件自带的方式导出,需要考虑数据恢复
3 备份传输最好考虑安全加密,但不是必要的。
4 最好使用rsync和rclone的方式第一备份为主机A第二备份请放置于OneDrive

View File

@@ -0,0 +1,108 @@
# 异地冷备份
## Rclone的方式
- 备份到GoogleDrive里面
抽取三个脚本中复用的函数及变量到公共的sh文件中
- 已知公共变量
1. 脚本运行目录为 /root/wdd/backup
2. 脚本运行日志目录为 /root/wdd/backup/logs
3. 远程主机的ssh端口均为22333
4. 默认日志级别
5. 7zip加密密码
6. rclone远程仓库地址
- 已知公共函数
1. 日志函数
1. 不同日志级别
2. INFO以上级别日志需要打印至文件中
2. 远程执行函数
1. 在远程主机执行命令
2. ssh端口缺省值为22
3. 7zip加密函数-将特定的备份目录,全部加密压缩为压缩包
4. rclone复制函数
1. 将本地的加密压缩包,上传到远端 rclone copy xxx.7z gd-zeaslity:CloneCone-BackUp
5. rclone远程仓库副本数控制函数
1. rclone检测google drive种压缩包的数量根据xxx_max_encrpted_replicas进行限制控制最大压缩包数量按照时间排序删除最早的压缩包
6. 本地加密压缩包清理函数
1. 删除特定目录下的 ***.7z压缩包
# Vault-Warden备份
## 备份说明
备份频率 每天一次 通过crontab执行 每天凌晨2点执行
备份副本数 最近3份
官方备份说明 https://github.com/dani-garcia/vaultwarden/wiki/Backing-up-your-vault
## 备份过程
1. 远程执行s5执行vault-warden官方备份命令
2. rsync复制s5主机上特定的备份文件到本地主机备份目录/data/s5_146-56-159-175/vault-warden/
3. 远程执行s5删除掉备份的数据库文件
4. 7zip加密函数 压缩本地目录
5. rclone复制函数 上传压缩包
6. rclone远程仓库副本数控制函数 根据vault-warden_max_encrpted_replicas控制远程的副本数量
7. 本地加密压缩包清理函数
# NextCloud备份
## 备份说明
备份频率 每周一次 通过crontab执行 每周日凌晨2点执行
备份副本数 最近1份
官方备份说明 https://docs.nextcloud.com/server/latest/admin_manual/maintenance/backup.html
## 备份过程
1. 远程执行s5启用维护模式 docker exec nextcloud_web php occ maintenance:mode --on
2. 远程执行s5数据库备份 (MariaDB) docker exec nextcloud-db mariadb-dump --single-transaction -h localhost -u nextcloud -p'boge14@Level5' nextcloud > /data/nextcloud/nextcloud-db_backup_$(date +%Y%m%d-%H%M%S).sql
3. rsync复制s5主机上下面的备份文件到本地主机目录/data/s5_146-56-159-175/nextcloud/
1. /data/nextcloud/*
4. 远程执行s5: 删除掉下面的文件
1. /data/nextcloud/nextcloud-db_backup_*.sql
5. 远程执行s5: 禁用维护模式 docker exec nextcloud_web php occ maintenance:mode --off
6. 7zip加密函数 压缩本地目录
7. rclone复制函数 上传压缩包
8. rclone远程仓库副本数控制函数 根据nextcloud_max_encrpted_replicas控制远程的副本数量
9. 本地加密压缩包清理函数
# Gitea备份
## 备份说明
备份频率 每周三 周六凌晨2点执行 /root/wdd/backup/gitea-backup.sh
备份副本数 最近3份
官方备份说明 https://docs.gitea.com/zh-tw/administration/backup-and-restore
## 备份过程
1. 远程执行t0: 执行gitea备份命令 docker exec -it gitea-gitea-1 /opt/bitnami/gitea/bin/gitea dump -c /bitnami/gitea/custom/conf/app.ini
2. 远程执行t0: 执行 docker exec -it gitea-gitea-1 /bin/sh -c "mv /opt/bitnami/gitea/gitea-dump-*.zip /opt/bitnami/gitea/data/tmp/gitea-dump-$(date +%Y%m%d-%H%M%S).zip"
3. rsync复制t0主机上的 /data/gitea/gitea_data/data/tmp/gitea-dump-*.zip ,到本地主机目录/data/t0_150_230_198_103/gitea/
4. 远程执行t0: 清除本地备份 rm /data/gitea/gitea_data/data/tmp/gitea-dump-*.zip
5. 7zip加密函数 压缩本地目录
6. rclone复制函数 上传压缩包
7. rclone远程仓库副本数控制函数 根据gitea_max_encrpted_replicas控制远程的副本数量
8. 本地加密压缩包清理函数
请在ubnutu环境下使用定时任务按照定时频率执行如下的任务
每周三 周六凌晨2点执行 /root/wdd/backup/gitea-backup.sh
每周日凌晨2点执行 /root/wdd/backup/nextcloud-backup.sh
每天凌晨2点执行 /root/wdd/backup/vault-warden-backup.sh
要求脚本的执行目录为 /root/wdd/backup
请给出crontab的命令 请给出查看定时任务执行日志的命令
# 添加以下内容:
# Gitea备份 - 每周三、周六凌晨2点
0 2 * * 3,6 cd /root/wdd/backup && /root/wdd/backup/gitea-backup.sh
# Nextcloud备份 - 每周日凌晨2点
0 2 * * 0 cd /root/wdd/backup && /root/wdd/backup/nextcloud-backup.sh
# Vaultwarden备份 - 每天凌晨2点
0 2 * * * cd /root/wdd/backup && /root/wdd/backup/vault-warden-backup.sh
查看cron服务的系统日志推荐方式
sudo grep CRON /var/log/syslog
# 或者使用journalctl查看系统日志
sudo journalctl -u cron.service --since today
# 查看特定备份脚本的执行日志(需要脚本内有日志输出)
sudo tail -f /var/log/syslog | grep -E "(gitea-backup|nextcloud-backup|vault-warden-backup)"
# 查看最近24小时的cron执行记录
sudo grep CRON /var/log/syslog | grep "$(date +'%b %e')"
# 查看特定日期的执行记录例如查看10月15日的记录
sudo grep CRON /var/log/syslog | grep "Oct 15"