标签 - gogs

gogs    2023-05-18 11:26:03    10    0    0

背景

有一个项目达到了80多M,拉取非常man
实际影响的文件如下

  1. $ du -sh ./*
  2. 1.0K ./HEAD
  3. 1.0K ./config
  4. 1.0K ./description
  5. 49K ./hooks
  6. 12K ./index
  7. 1.0K ./info
  8. 3.0K ./logs
  9. 80M ./objects
  10. 4.0K ./packed-refs
  11. 2.0K ./refs
  12. $ du -sh ./objects/*
  13. 116K ./objects/pack/pack-2be7641a760fcd46b8fe118cf2ffdcd91d60c3c9.idx
  14. 80M ./objects/pack/pack-2be7641a760fcd46b8fe118cf2ffdcd91d60c3c9.pack

git文件解释

  1. $ ls
  2. HEAD // 指向当前分支
  3. branches/ // 目录
  4. config // 项目特有的配置选项
  5. description // 仅供 GitWeb 程序使用
  6. hooks/ // 保存了客户端或服务端钩子脚本
  7. index // 保存了暂存区域信息
  8. info/ // 保存了一份不希望在 .gitignore 文件中管理的忽略模式 (ignored patterns) 的全局可执行文件
  9. objects/ // 存储所有数据内容
  10. refs/ // 存储指向数据 (分支) 的提交对象的指针
gogs    2023-05-18 11:07:51    12    0    0

官方方法

除了分别打包gogs存储库,自定义和数据库之外,Gogs还提供了两个命令,用于统一备份,还原甚至迁移到另一个数据库引擎的过程。

备份

  1. # 没有任何标志,backup 命令会将所有 gogs-repository、custom 和 database 打包到当前目录下的单个 zip 存档中(例如 gogs-backup-xxx.zip)
  2. ./gogs backup
  3. # 如果您的gogs存储库包含GB的原始数据,这可能是一个坏主意,在这种情况下,您可以应用–exclude-repos标志
  4. ./gogs backup --exclude-repos
  5. # 如果你的 custom/conf/app.ini 不寻常,请确保像往常一样通过 –config 标志指定它:
  6. ./gogs backup --config=my/custom/conf/app.ini

数据库

  1. 如果你只对备份数据库感兴趣,或者想从一个数据库引擎(例如SQLite3)迁移到另一个引擎(例如MySQL),–database-only是你的朋友:
  2. ./gogs backup --database-only
  3. 数据库的备份格式是可移植的JSON文件,每个文件对应一个数据库表,你可以对这些文件做任何你想做的事情。

恢复

  1. 命令还具有指示仅还原数据库或备份存档中所有内容的标志:
  2. 如果表未显示在备份存档中,则当前数据库表中的任何内容将保持不变。
  3. ./gogs restore --database-only --from="gogs-backup-xxx.zip"
  4. 非标配置,要声明
  5. ./gogs restore --database-only --from="gogs-backup-xxx.zip" --config=my/custom/conf/app.ini

自定义配置文件

有 3 个步骤可以确定使用哪个自定义/conf/app.ini 命令:

使用您指定的标志 --config 。

使用存储在备份存档中的那个。

使用 $(pwd)/custom/conf/app.ini 中的那个。

如果所有3个步骤都失败了,对不起,无法执行还原过程。

  1. 1)每天晚上