AutoDL 同步
使用此技能附带的脚本进行项目同步。
当这些脚本可以执行所需操作时,请勿手动构造 scp 或 rsync 命令。
项目发现
同步脚本动态确定项目根目录。
它们优先使用 Git 仓库根目录。如果当前目录不在 Git 仓库内,则向上搜索 .autodl-sync。
请勿硬编码本地项目路径。
项目配置
项目特定的同步设置存储于:
<项目根目录>/.autodl-sync
该配置可以定义:
- 远程 SSH 主机
- 远程基础目录
- 远程项目名称
- 显式远程目录
- Git 感知或显式上传排除规则
- 额外上传排除规则
- 选择性或全项目结果下载
- 拉取排除规则、最大文件大小、删除和覆盖行为
- rsync 行为
通过提供的脚本读取同步设置,而不是重复配置逻辑。
上传代码
当用户要求:
- 同步代码
- 上传代码
- 部署当前源代码
- 更新 AutoDL 副本
运行:
scripts/push-code.sh <项目根目录>
如果项目根目录已经是当前工作项目,则可以省略参数。
上传过滤器始终应用强制性安全排除规则。在 auto 模式下,当仓库根目录存在 .gitignore 时,它使用 Git 跟踪且未被忽略的文件列表;否则使用已配置的排除规则。项目 EXCLUDES_APPEND 条目在所有模式下均生效。
仅在解析出的上传模式为 excludes 时才支持 SYNC_DELETE=true;Git 文件列表模式无法安全识别所有过时的远程文件,必须失败,而不是暗示完全删除镜像。
下载结果
当用户要求:
- 拉取训练结果
- 下载检查点
- 检索日志
- 检索预测结果
- 同步实验输出
运行:
scripts/pull-results.sh <项目根目录>
PULL_DIRS 条目相对于 REMOTE_DIR。空数组表示不拉取任何内容。PULL_ALL=true 显式拉取整个远程项目,且不得与非空的 PULL_DIRS 组合使用。拉取排除规则、最大文件大小、本地删除和覆盖保护独立于上传过滤。
编码工作流
当项目指令明确要求在代码更改后执行同步时:
- 完成请求的源代码修改。
- 运行适当的本地验证或测试。
- 如果验证成功,则运行
push-code.sh。 - 报告同步是否成功。
除非用户明确请求远程执行,否则不要自动启动远程训练。
SSH 认证
AutoDL 认证使用项目 .autodl-sync 配置的专用本地 SSH 密钥。
私钥必须保留在本地机器上。
如果尚未为新 AutoDL 实例配置公钥认证,请运行:
scripts/setup-key.sh <项目根目录>
此操作可能会交互式地请求一次 AutoDL 账户密码,以便安装公钥。
设置成功后,推送和拉取操作必须使用公钥认证。
切勿打印、读取、上传、复制或暴露 SSH 私钥。
安全性
切勿检查、打印、复制或修改 SSH 私钥。
SSH 连接设置从项目的 .autodl-sync 读取,并显式传递给 ssh 和 rsync。脚本不需要在 ~/.ssh/config 中有条目。
不要上传凭据或机密信息。
尊重项目 .autodl-sync 定义的排除规则和同步行为。
除非项目配置明确要求,否则不要启用上传或拉取删除。每次同步后,向用户报告脚本的文件操作摘要。