1575 字约 5 分钟
云原生开发采用按需使用、闲置自动销毁的策略。为防止环境销毁后丢失未提交代码和配置,系统会自动备份和漫游。
工作区代码备份
无需担心环境销毁导致工作区未提交代码丢失,系统提供两种备份方式确保代码安全。
提示
对于团队开发,建议创建个人分支进行开发。一个分支仅由一个人开发,这样可以减少恢复代码导致的冲突。
开发环境销毁时备份
在当前工作区目录 /workspace 修改代码后,即使未及时提交,环境回收时也会自动备份。重建开发环境后,代码会自动恢复到工作区。
1. 备份和恢复方式
- 备份:环境销毁时将未提交代码打包上传
注意:每个分支仅保留一份备份,新备份会覆盖旧备份。如果同一分支同时启动了两个环境,后销毁的备份会覆盖先销毁的。
- 恢复:环境重建时下载备份并原样恢复到工作区
提示
即以下两种情况不会备份:
- 单个代码文件或单个 diff 文件内容大小超过 100MB 会被过滤掉,仅打包不超过 100MB 的文件
- 总的备份文件大小超过 100MB,不会被备份
大文件建议用 .gitignore 忽略
2. 备份内容
- 工作区的 stash
- 工作区未 push 的 commit
- 工作区未提交代码(工作区修改、暂存区修改、未追踪文件,不包括
.gitignore忽略的文件)
3. 备份代码删除时机
- 每个分支仅保留最新一份备份,新备份会覆盖旧备份。
- 删除分支时,该分支下所有用户的备份代码会被自动删除且无法恢复。
4. 恢复策略说明
重建或新建环境时,会基于分支最新代码启动,并尝试恢复最新的备份。如果在非云原生开发环境中提交过代码,可能会发生冲突,此时可丢弃恢复的代码。
提示
工作区代码备份在恢复成功后会自动删除远端备份,即每次备份仅可恢复一次。新环境销毁时会产生新备份。
非工作区文件漫游(如 .gitconfig、自定义漫游目录等)的远端备份不会被删除,会持续保留供后续环境复用。
以下内容不会备份:
.gitignore中声明的内容- 子仓库中的修改
- 非工作区的修改
定时备份策略
为提高备份可靠性,系统还采用定时备份策略,每 5 分钟自动将未提交代码打包上传。
- 下载:在
我的云原生开发列表页可下载备份代码压缩包。 - 删除:删除开发环境历史记录时会删除该备份。
提示
- 单个文件超过 100MB,该文件不会备份。
- 备份代码压缩包超过 100MB 也不会被备份。
非工作区文件漫游
云原生开发支持非工作区目录的文件漫游,环境销毁后再次创建时会自动恢复。
最大漫游容量:100 MB,超出将报错且无法漫游。
默认漫游内容
以下文件或文件夹按用户维度漫游,对所有项目生效(~ 为当前用户主目录,一般为 /root):
~/.gitconfig:Git 全局配置。若容器内已存在该文件(如自定义环境预置),则恢复和保存时均跳过。推荐自定义环境时修改/etc/gitconfig以避免冲突。~/.local/share/code-server/User/settings.json:WebIDE 配置文件~/.local/share/code-server/User/snippets/*:WebIDE 相关配置~/.local/share/code-server/User/keybindings.json:WebIDE 快捷键配置
用户可在 ~/.cnb 目录下新增个人环境所需的配置文件。例如,在 ~/.cnb 目录下新增 .env.local 存储个人环境变量,再通过脚本任务将其复制或软链到工作目录,并在 .gitignore 中忽略该文件。
示例一:复制文件到工作目录
修改漫游文件时需直接编辑 /root/.cnb/.env.local:
$:
vscode:
- name: vscode
services:
- vscode
stages:
- name: 复制 .env.local 文件到工作目录(仓库根目录)
# ./ 是工作目录,默认为 /workspace
script: |
if [ -e "/root/.cnb/.env.local" ]; then
cp -f /root/.cnb/.env.local ./
else
echo "文件不存在"
fi示例二:软链文件到工作目录
使用软链方式修改工作目录的 /workspace/.env.local 即可同步修改源文件:
$:
vscode:
- name: vscode
services:
- vscode
stages:
- name: 软链 .env.local 文件到工作目录(仓库根目录)
# ./ 是工作目录,默认为 /workspace
script: |
if [ -e "/root/.cnb/.env.local" ]; then
ln -sf /root/.cnb/.env.local ./.env.local
else
echo "文件不存在"
fi自定义漫游目录或文件
除了上述默认漫游内容外,用户还可以自定义需要漫游的目录或文件。
在 [个人设置
云原生开发](https://cnb.cool/profile/workspaces) 页面中,可配置自定义漫游目录或文件路径。配置后,云原生开发环境销毁时会自动漫游保存这些目录或文件,新建或重建环境时将自动恢复。
配置说明:
- 需填写绝对路径,支持 Glob 格式
- 多个路径可换行分隔
示例:
/root/.bashrc
/root/.config/漫游原理和时机
漫游时机: 修改可漫游文件后不会立即漫游,而是等到环境销毁时再提取保存。
恢复方式: 重建环境时自动恢复漫游文件。
验证方法: 需在环境销毁后重新创建环境,才能看到漫游效果。
提示
注意:
- 同时打开多个开发环境时,后销毁的漫游内容会覆盖先销毁的
- 通过
kill 1关闭开发环境,无法漫游成功 - 如果需要漫游的文件是一个软链,我们将漫游软链的原始文件,而不是软链,目的是避免原始文件丢失。如果软链的原始文件不存在,则不进行漫游。