Ubuntu 系统下本地文件夹完整备份到 GitHub 仓库(实操指南)

Ubuntu 系统下本地文件夹完整备份到 GitHub 仓库(实操指南)

不再孤独ing MVP++

Ubuntu 系统下本地文件夹完整备份到 GitHub 仓库(实操指南)

本文针对 Ubuntu 系统,提供「本地文件夹 → GitHub 仓库」的完整备份方案,包含首次全量备份日常增量备份多账号适配(如你之前配置的双 GitHub 账号),步骤清晰可直接复刻,兼顾新手友好性和实用性。

一、前置准备

  1. 环境确认:Ubuntu 已安装 Git(未安装执行:sudo apt install git -y);

  2. SSH 配置:已为目标 GitHub 账号配置 SSH Key(多账号需提前配置 ~/.ssh/config 区分别名);

  3. GitHub 仓库:提前在目标账号创建空仓库(建议仓库名与本地文件夹名一致,无需初始化 README/许可证);

  4. 本地文件夹:待备份的文件夹路径无中文/特殊字符(如 ~/my-backup-folder)。

    二、核心逻辑

    通过 Git 将本地文件夹初始化为仓库 → 关联远程 GitHub 仓库 → 提交所有文件并推送;后续仅需「拉取-提交-推送」即可实现增量备份,保证本地与远程文件同步。


三、步骤 1:首次全量备份(核心操作)

3.1 进入本地文件夹并初始化 Git 仓库

1
2
3
4
5
6
7
8
# 替换为你的本地文件夹路径
cd ~/my-backup-folder
# 初始化 Git 仓库(仅首次执行)
git init
# 多账号必做:配置当前仓库专属的 Git 用户名/邮箱(对应 GitHub 账号)
git config user.name "your-github-username"
git config user.email "your-github-email@xxx.com"
# 单账号可省略,用全局配置:git config --global user.name/email

3.2 配置 .gitignore(过滤无用文件)

创建 .gitignore 文件,避免备份日志、缓存、依赖包等无用文件,减少仓库体积:

1
2
# 在备份文件夹内创建 .gitignore
nano .gitignore

粘贴通用忽略模板(按需删减):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 日志文件
*.log
logs/
# 缓存/临时文件
.DS_Store
tmp/
.cache/
*.swp
# 依赖包(按需删除)
node_modules/
venv/
dist/
# 自定义需忽略的文件夹/文件
# test-folder/
# secret.txt

保存退出:Ctrl+O → 回车 → Ctrl+X

3.3 关联远程 GitHub 仓库并推送

1
2
3
4
5
6
7
8
9
10
11
12
# 关联远程仓库(替换为你的仓库地址)
# 单账号:git@github.com:用户名/仓库名.git
# 多账号:git@github-别名:用户名/仓库名.git(如 git@github-accountA:test/backup.git)
git remote add origin git@github-accountA:your-username/your-repo-name.git
# 验证关联是否正确(输出 origin 对应的 SSH 地址即正常)
git remote -v
# 添加所有文件到暂存区(.gitignore 中的文件自动忽略)
git add .
# 提交文件(备注清晰,便于追溯)
git commit -m "首次备份:完整备份 my-backup-folder 文件夹"
# 首次推送(-u 绑定本地 main 分支与远程 main 分支)
git push -u origin main

执行完成后,登录 GitHub 仓库页面,即可看到本地文件夹的所有文件已同步。

四、步骤 2:日常增量备份(文件修改/新增后)

当本地文件夹内容有变更时,只需执行以下 4 步完成增量备份:

1
2
3
4
5
6
7
8
9
# 1. 进入备份文件夹
cd ~/my-backup-folder
# 2. 拉取远程最新版本(单人备份可省略,多人协作必做)
git pull origin main
# 3. 添加所有变更文件
git add .
# 4. 提交并推送(备注描述变更内容)
git commit -m "增量备份:2026-03-06 修改 xxx 文件 + 新增 yyy 文件夹"
git push origin main

五、进阶:一键备份脚本(懒人必备)

创建 Shell 脚本,无需手动输入命令,一键完成增量备份:

5.1 创建脚本文件

1
nano ~/my-backup-folder/auto-backup.sh

5.2 编写脚本内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
# 本地文件夹备份到 GitHub 一键脚本
# 定义备份文件夹路径(替换为你的路径)
BACKUP_FOLDER="~/my-backup-folder"
# 定义远程仓库地址(替换为你的地址)
REMOTE_REPO="git@github-accountA:your-username/your-repo-name.git"
# 进入备份文件夹,失败则退出
cd $BACKUP_FOLDER || { echo "❌ 文件夹路径错误!"; exit 1; }
# 拉取远程最新版本
git pull origin main
# 添加所有变更
git add .
# 获取当前时间作为提交备注
COMMIT_MSG="增量备份:$(date +'%Y-%m-%d %H:%M:%S')"
# 提交并推送
git commit -m "$COMMIT_MSG"
git push origin main
# 提示备份完成
echo "✅ 备份成功!当前时间:$(date +'%Y-%m-%d %H:%M:%S')"

5.3 赋予执行权限并运行

1
2
3
4
# 赋予脚本执行权限
chmod +x ~/my-backup-folder/auto-backup.sh
# 一键备份(每次修改文件后执行)
~/my-backup-folder/auto-backup.sh

六、常见问题解决

1. 推送报错:fatal: remote origin already exists

  • 原因:本地仓库已关联过其他远程仓库;

  • 解决:删除旧关联后重新关联:

    1
    2
    git remote rm origin
    git remote add origin git@github-accountA:your-username/your-repo-name.git

    2. 推送报错:Permission denied (publickey)

  • 原因:SSH Key 未配置/未添加到 GitHub 账号;

  • 解决:

    1. 测试 SSH 连接:ssh -T git@github-accountA(多账号)/ ssh -T git@github.com(单账号);

    2. 检查 SSH Key 权限:chmod 700 ~/.ssh && chmod 600 ~/.ssh/id_rsa_accountA

    3. 重新将公钥添加到 GitHub 账号。

      3. 部分文件未备份

  • 原因:文件被 .gitignore 忽略,或未执行 git add .

  • 解决:

    1. 检查 .gitignore 规则,删除不需要忽略的条目;
    2. 强制添加被忽略的文件:git add -f 文件名(不推荐,优先修改 .gitignore)。

总结

  1. 首次备份:核心是「初始化仓库 → 配置 .gitignore → 关联远程 → 提交推送」,完成全量同步;
  2. 日常备份:仅需「拉取 → 提交 → 推送」三步,实现增量更新;
  3. 效率优化:一键脚本可简化操作,适合高频备份场景;
  4. 多账号适配:只需将远程仓库地址替换为 SSH 别名(如 git@github-accountA:xxx.git),即可区分不同 GitHub 账号。
    按上述步骤操作后,本地文件夹会与 GitHub 仓库实时同步,既保证文件安全,又能从其他设备随时拉取最新版本,完美适配多账号/多仓库场景。

Comments