# 异地冷备份 ## 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"