Skip to content

SFTP 与文件复制

Knot 提供两类文件操作:交互式 knot sftp shell,以及面向脚本的批处理命令。knot cp 使用 Docker 风格的 alias:/path 远程路径,适合本地和远程之间复制文件或目录。

交互式 SFTP

sh
knot sftp [alias] [remote_path]
参数必填说明
[alias]服务器别名。
[remote_path]初始远程目录。

示例:

sh
knot sftp web-prod
knot sftp web-prod /var/www

交互式 shell 支持命令补全和路径补全。

SFTP shell 命令

命令用法说明
helphelp?显示帮助。
exitexitquitbye退出 SFTP shell。
lsls [path]列出远程目录内容。
pwdpwd输出当前远程目录。
cdcd <path>切换远程目录。
getget <remote_path> [local_path]下载文件或目录。
putput <local_path> [remote_path]上传文件或目录。
mgetmget <remote_pattern> [local_dir]按通配符批量下载。
mputmput <local_pattern> [remote_dir]按通配符批量上传。
rmrm <path>删除远程文件。
mkdirmkdir <path>创建远程目录。
rmdirrmdir <path>删除远程目录。

示例:

text
sftp:/var/www> ls
sftp:/var/www> put ./dist/app.tar.gz /tmp/app.tar.gz
sftp:/var/www> get release.tar.gz ~/Downloads/

批处理 SFTP 命令

这些命令不进入交互式 shell,适合脚本:

命令用法说明
knot sftp lsknot sftp ls alias:/path列出远程目录。
knot sftp statknot sftp stat alias:/path显示远程文件或目录元数据。
knot sftp rmknot sftp rm alias:/path删除远程文件。
knot sftp mkdirknot sftp mkdir alias:/path创建远程目录,包括缺失的父目录。
knot sftp rmdirknot sftp rmdir alias:/path删除远程目录。
knot sftp mvknot sftp mv alias:/old alias:/new重命名远程文件或目录。源和目标必须在同一 alias 上。

示例:

sh
knot sftp ls web-prod:/var/www
knot sftp stat web-prod:/var/www/index.html
knot sftp mv web-prod:/tmp/a web-prod:/tmp/b

knot cp

sh
knot cp [SRC] [DEST] [flags]
参数必填说明
[SRC]本地路径,或 alias:/path 形式的远程路径。
[DEST]本地路径,或 alias:/path 形式的远程路径。不支持远程到远程复制。
选项类型默认值说明
-r, --recursivebooltrue递归复制目录。
-f, --forceboolfalse覆盖已有文件。

示例:

sh
knot cp ./dist/. web-prod:/var/www/html/
knot cp web-prod:/var/log/nginx/access.log ./

源目录以 /. 结尾时复制目录内容,而不是目录本身。