autodl互通简单数据
命令
从B实例的数据拷贝到A实例,即B的实例数据是对的
1 | rsync -avzP -e "ssh -p B实例端口" root@B实例域名:B实例数据绝对路径/ A实例数据绝对路径/ |
📋 实战命令模版
假设你的项目和数据存放在 /root/autodl-tmp/my_project/:
Bash
1 | rsync -avzP -e "ssh -p 32145" root@region-1.autodl.com:/root/autodl-tmp/my_project/ /root/autodl-tmp/my_project/ |
🔍 参数深度解析
| 参数 | 作用说明 |
|---|---|
-a (archive) |
归档模式。保持文件的所有属性(权限、时间戳、软链接等)不改变。 |
-v (verbose) |
详细模式。在终端打印当前正在传输的文件列表和进度。 |
-z (compress) |
传输时压缩。在网络传输过程中对数据进行压缩,节省带宽,提高传输速度。 |
-P (progress) |
显示实时传输进度条,并支持断点续传(对大文件非常重要)。 |
-e "ssh -p ..." |
指定远程连接使用的协议和非标准端口(AutoDL 必须指定端口)。 |
⚠️ 避坑指南:必须注意的「斜杠 /」细节
rsync 对路径末尾的斜杠 / 极其敏感,不同的写法会导致完全不同的结果:
- 正确写法(推荐):源路径和目标路径末尾都带斜杠
- 示例:
...:/root/project/ /root/project/ - 效果:将 B 实例
project目录内部的内容,同步到 A 实例的project目录内部。
- 示例:
- 错误写法:源路径末尾不带斜杠
- 示例:
...:/root/project /root/project/ - 效果:会在 A 实例的
project目录下再创建一个project目录,变成了/root/project/project/。
- 示例:
🚀 高级进阶技巧
1. 排除特定目录(不全量同步)
如果你不想同步 weights/(权重文件)或 dataset/(原始数据集,因为已经有了),只想同步代码和日志,可以使用 --exclude 参数:
Bash
1 | rsync -avzP --exclude="dataset/" --exclude="*.mp4" -e "ssh -p 32145" root@region-1.autodl.com:/root/autodl-tmp/my_project/ /root/autodl-tmp/my_project/ |
2. 双向完全对齐(谨慎使用)
如果 B 实例中删除了某些没用的临时文件,你希望 A 实例也跟着删除,保持完全一致,可以加上 --delete 参数。
- 警告:这会删除 A 实例中存在但 B 实例中没有的文件,执行前请务必确认!
Bash
1 | rsync -avzP --delete -e "ssh -p 32145" root@region-1.autodl.com:/root/autodl-tmp/my_project/ /root/autodl-tmp/my_project/ |
3. 一键同步脚本
为了避免每次手动输入长命令,你可以在 A 实例的根目录下创建一个脚本 sync_from_b.sh:
Bash
1 |
|
给脚本赋予执行权限:chmod +x sync_from_b.sh。下次直接运行 ./sync_from_b.sh 即可。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Hyacinth!