有一个项目达到了80多M,拉取非常man
实际影响的文件如下
$ du -sh ./*
1.0K ./HEAD
1.0K ./config
1.0K ./description
49K ./hooks
12K ./index
1.0K ./info
3.0K ./logs
80M ./objects
4.0K ./packed-refs
2.0K ./refs
$ du -sh ./objects/*
116K ./objects/pack/pack-2be7641a760fcd46b8fe118cf2ffdcd91d60c3c9.idx
80M ./objects/pack/pack-2be7641a760fcd46b8fe118cf2ffdcd91d60c3c9.pack
$ ls
HEAD // 指向当前分支
branches/ // 目录
config // 项目特有的配置选项
description // 仅供 GitWeb 程序使用
hooks/ // 保存了客户端或服务端钩子脚本
index // 保存了暂存区域信息
info/ // 保存了一份不希望在 .gitignore 文件中管理的忽略模式 (ignored patterns) 的全局可执行文件
objects/ // 存储所有数据内容
refs/ // 存储指向数据 (分支) 的提交对象的指针
除了分别打包gogs存储库,自定义和数据库之外,Gogs还提供了两个命令,用于统一备份,还原甚至迁移到另一个数据库引擎的过程。
# 没有任何标志,backup 命令会将所有 gogs-repository、custom 和 database 打包到当前目录下的单个 zip 存档中(例如 gogs-backup-xxx.zip)
./gogs backup
# 如果您的gogs存储库包含GB的原始数据,这可能是一个坏主意,在这种情况下,您可以应用–exclude-repos标志
./gogs backup --exclude-repos
# 如果你的 custom/conf/app.ini 不寻常,请确保像往常一样通过 –config 标志指定它:
./gogs backup --config=my/custom/conf/app.ini
如果你只对备份数据库感兴趣,或者想从一个数据库引擎(例如SQLite3)迁移到另一个引擎(例如MySQL),–database-only是你的朋友:
./gogs backup --database-only
数据库的备份格式是可移植的JSON文件,每个文件对应一个数据库表,你可以对这些文件做任何你想做的事情。
命令还具有指示仅还原数据库或备份存档中所有内容的标志:
如果表未显示在备份存档中,则当前数据库表中的任何内容将保持不变。
./gogs restore --database-only --from="gogs-backup-xxx.zip"
非标配置,要声明
./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)每天晚上