SFTP 工作流
sshx 支持常见的一次性 SFTP 操作。它不是交互式文件管理器;每次调用只做一个明确的上传、下载、列目录、创建目录或删除操作。
上传文件
sshx -h=prod-web --upload=./deploy/nginx.conf --to=/tmp/nginx.conf
覆盖已有远程文件并需要备份/哈希前置条件时,用 受控文件 Apply,不要自己拼 upload + install:
sshx apply -h=prod-web --path=/etc/nginx/nginx.conf --from=./deploy/nginx.conf --sudo --json
sshx run --target=prod-web --json -- "sudo nginx -t"
下载文件
sshx -h=prod-web --download=/var/log/nginx/error.log --to=./error.log
事故材料采集示例:
mkdir -p incident-2026-07-01/prod-web
sshx -h=prod-web --download=/var/log/nginx/error.log --to=incident-2026-07-01/prod-web/error.log
sshx -h=prod-web --download=/etc/os-release --to=incident-2026-07-01/prod-web/os-release
列目录与创建目录
sshx -h=prod-web --list=/var/log
sshx -h=prod-web --mkdir=/tmp/sshx-upload
删除远程文件
sshx -h=prod-web --rm=/tmp/old-upload.txt
把远程删除当成生产变更。建议先列出父目录:
sshx -h=prod-web --list=/tmp
sshx -h=prod-web --rm=/tmp/old-upload.txt
路径边界
本地路径遵循本地操作系统规则。远程路径是 SFTP 路径,应使用斜杠分隔;即使 sshx 在 Windows 上运行也一样。
# 本地 Windows 路径,远程 POSIX 路径
sshx -h=prod-web --upload=C:\Users\alice\release.zip --to=/tmp/release.zip
什么时候改用 SSH 命令
当操作需要远程校验或权限变更时,使用 SSH 命令:
sshx -h=prod-web "sudo ls -l /etc/nginx"
sshx -h=prod-web "sudo install -m 0644 /tmp/nginx.conf /etc/nginx/nginx.conf"
SFTP 负责文件移动。远程命令负责检查、改属主、reload 服务和需要 sudo 的清理。