远程开发与集群
参考资料
SSH
配置
Host lab
HostName 10.0.0.12
User hx
Port 22
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 30
ServerAliveCountMax 4
Host gpu01
HostName 10.10.0.21
User hx
ProxyJump lab
~/.ssh/config 给远程主机起别名, 后续 ssh, scp, rsync 都能用
ProxyJump 走跳板机, 比先登录跳板机再手动登录目标机器干净
ServerAliveInterval 与 ServerAliveCountMax 用于保活和断线检测
- 多级跳板可以写成
ProxyJump gateway1,gateway2
ssh lab
scp file.txt lab:~/tmp/
rsync -av project/ lab:~/project/
密钥
ssh-keygen -t ed25519 -C "name@example.com"
ssh-copy-id lab
ssh-add ~/.ssh/id_ed25519
- 私钥留在本地, 公钥写入远程
~/.ssh/authorized_keys
- 私钥建议设置 passphrase, 再用
ssh-agent 缓存
- 常见权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/config ~/.ssh/id_ed25519 ~/.ssh/authorized_keys
chmod 644 ~/.ssh/id_ed25519.pub
tmux
tmux new -s work
tmux ls
tmux attach -t work
tmux kill-session -t work
tmux 用来保持远程会话, SSH 断开后 session 仍在
- 长任务放进
tmux 前先确认机器规则, 不要在登录节点跑重计算
- 离开时用
Ctrl-b d, 不要直接关掉正在运行任务的 shell
文件传输
scp
scp local.txt lab:~/tmp/
scp lab:~/result.txt .
scp -r project lab:~/project
scp -P 2222 local.txt user@host:~/tmp/
scp 适合少量文件的一次性复制
-r 复制目录, -P 指定端口
- 大目录, 断点续传和增量同步优先用
rsync
rsync
rsync -avP source/ lab:~/target/
rsync -avP source lab:~/target/
source/ 同步目录内容
source 同步目录本身
rsync -avP --exclude '.git/' --exclude '__pycache__/' project/ lab:~/project/
rsync -avP -e "ssh -p 2222" project/ user@host:~/project/
rsync -avn --delete source/ lab:~/target/
rsync -av --delete source/ lab:~/target/
-a 保留权限, 时间戳和符号链接等信息
-P 等价于 --partial --progress, 适合大文件和不稳定网络
--delete 会删除目标端多余文件, 先用 -n dry run
--exclude 排除缓存, 依赖目录和构建产物
大文件
tar -cf dataset.tar dataset/
rsync -avP dataset.tar lab:~/data/
sha256sum dataset.tar
- 海量小文件先打包再传, 避免元数据开销
- 文本和 CSV 适合压缩, 已压缩图片, 视频, parquet, zip 收益通常不大
- 重要数据传输后用
sha256sum 校验
Slurm