Skip to content

dqzboy/BACK_SYNC_GITHUB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 

Repository files navigation

BACK_SYNC_GITHUB

在服务器中通过脚本并结合crontab定时备份数据到GitHub仓库,适用于个人


脚本逻辑:

(1)克隆仓库或更新仓库

  • 克隆仓库:如果备份目录不存在,脚本会使用 git clone 克隆指定的 GitHub 仓库,并使用 Git 的稀疏检出功能(git sparse-checkout)仅克隆与当前服务器相关的目录。
  • 更新仓库:如果备份目录已存在,脚本会通过 git pull 更新本地仓库,确保本地仓库与远程仓库同步。

(2)备份文件处理

  • 清理旧文件:清空服务器特定的备份目录,确保只保留最新的备份。
  • 备份文件复制:遍历指定的文件和目录(如脚本中的示例为: /etc/passwd/etc/nginx/conf.d),并将其复制到服务器特定的备份目录中。 检查复制结果:如果复制失败,脚本会显示警告信息。

(3)提交和推送更改到 GitHub

  • 添加更改到 Git:将备份目录下的所有更改(包括删除的文件)添加到 Git 的暂存区(git add -A .)。
  • 提交更改:如果有更改(通过 git diff --cached --quiet 检查),则提交更改,提交信息包括当前时间。
  • 推送到远程仓库:将本地的备份更改推送到 GitHub 上的远程仓库,确保数据备份同步到远程仓库

前提条件:

  • 1、 创建GitHub仓库,设置为私有
  • 2、 创建GitHubToken,给个pull、push权限即可

注意:把Toekn保留下来,只会出现一次。下面修改脚本变量时需要使用到!

步骤流程:

(1)下载脚本到你的服务器

wget https://raw.githubusercontent.com/dqzboy/BACK_SYNC_GITHUB/refs/heads/main/git_sync_backup.sh

(2)修改脚本中的变量

  • 根据脚本中的注释,修改变量。主要修改的变量如下
    • GIT_USER="your_username" 请替换为你的GitHub用户名
    • GIT_TOKEN="GITHUB_TOKEN" 请替换为你的GitHub Token
    • REPO_NAME="your_repository" 请替换为你的GitHub仓库名称
    • BACKUP_SOURCES 需要备份的目录路径或者文件路径

(3)手动执行脚本测试

chmod +x git_sync_backup.sh
./git_sync_backup.sh

(4)添加定时任务

# 定义定时任务
crontab -e

# 例如:每天2点执行备份
0 2 * * * /your_path/git_sync_backup.sh

About

🔥🔥自动化备份重要数据到GitHub仓库

Topics

Resources

Stars

Watchers

Forks

Languages