scp

通过 SSH 协议在本地和远程主机之间安全复制文件和目录

语法

scp [options] source... target

参数

参数说明示例级别
-r 递归复制整个目录 scp -r ./dist user@host:/var/www/ 常用
-P 指定远程主机端口(注意是大写 P) scp -P 2222 file.txt user@host:/tmp/ 常用
-i 指定私钥文件 scp -i ~/.ssh/key file.txt user@host:/tmp/ 常用
-C 启用压缩传输 scp -C largefile.tar user@host:/backup/ 进阶
-q 静默模式,不显示进度 scp -q file.txt user@host:/tmp/ 进阶

示例

上传文件到远程

scp ./app.jar deploy@server:/opt/app/
将本地文件复制到远程服务器

从远程下载文件

scp user@host:/var/log/app.log ./logs/
将远程文件下载到本地

递归上传目录

scp -r ./build/ user@host:/var/www/html/
上传整个目录及其内容

在两台远程主机间复制

scp user1@host1:/data/file.txt user2@host2:/backup/
通过本地中转在两台远程服务器间复制

常见错误

scp: /path/to/file: Permission denied 远程目标目录没有写权限,用 ssh 登录后 chmod 或换一个有权限的目录
scp: not a regular file 尝试复制目录但没加 -r 参数,加上 -r 递归复制

技巧

相关命令