在服务器中通过脚本并结合crontab定时备份数据到GitHub仓库,适用于个人
- 克隆仓库:如果备份目录不存在,脚本会使用
git clone克隆指定的 GitHub 仓库。 - 更新仓库:如果备份目录已存在,脚本会通过
git pull更新本地仓库,确保本地仓库与远程仓库同步。
- 清理旧文件:清空服务器特定的备份目录,确保只保留最新的备份。
- 备份文件复制:遍历指定的文件和目录(如脚本中的示例为:
/etc/passwd和/etc/nginx/conf.d),并将其复制到服务器特定的备份目录中。 - 检查复制结果:如果复制失败,脚本会显示警告信息。
- 添加更改到 Git:将备份目录下的所有更改(包括删除的文件)添加到 Git 的暂存区。
- 提交更改:如果有更改(通过
git diff --cached --quiet检查),则提交更改,提交信息包括当前时间。 - 推送到远程仓库:将本地的备份更改推送到 GitHub 上的远程仓库,确保数据备份同步到远程仓库。
- 多台服务器同时备份:推送被拒绝时自动处理,自动执行git fetch和git merge,然后重试推送,最大重试次数为3次(
max_retries=3)。
- 1、 创建GitHub仓库,设置为私有
![]() |
- 2、 创建GitHubToken,给个pull、push权限即可
![]() |
![]() |
![]() |
注意:把Toekn保留下来,只会出现一次。下面修改脚本变量时需要使用到!
wget https://raw.githubusercontent.com/dqzboy/BACK_SYNC_GITHUB/refs/heads/main/git_sync_backup.sh- 根据脚本中的注释,修改变量。主要修改的变量如下
GIT_USER="your_username"请替换为你的GitHub用户名GIT_TOKEN="GITHUB_TOKEN"请替换为你的GitHub TokenREPO_NAME="your_repository"请替换为你的GitHub仓库名称BACKUP_SOURCES需要备份的目录路径或者文件路径
chmod +x git_sync_backup.sh
./git_sync_backup.sh# 定义定时任务
crontab -e
# 例如:每天2点执行备份
0 2 * * * /your_path/git_sync_backup.sh手动将服务器上备份目录下的
.git文件夹删除后,再次执行脚本
| 描述信息 | 图文介绍 |
|---|---|
| 提供高性价比的海外VPS,支持多种操作系统,适合搭建Docker代理服务。 |
|
| CloudCone 提供灵活的云服务器方案,支持按需付费,适合个人和企业用户。 |
|
Telegram Bot: 点击联系 | E-Mail: support@dqzboy.com
*仅接受长期稳定运营,信誉良好的商家



