官方帮助:
scp: illegal option -- h
usage: scp [-346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program] source ... target
OPTIONS:
- -v 显示进度。可以用来查看连接、认证、或是配置错误
- -C 使能压缩选项
- -P 选择端口
- -r 复制目录
- -F 指定ssh_config配置文件
- -i 指定登录的证书文件
假设默认的~/.ssh/config
已经配置好了证书的服务器名称
例如:
Host aliyun
HostName 123.123.123.9
User simon
Port 22
IdentityFile ~/.ssh/id_rsa
那么服务器端口和证书文件选项都可以省略。
上传文件就可以简化为:
scp local_file user@HostName:remote_directory
#上传文件test.png到服务器aliyun用户simon的主目录
scp ~/Downloads/test.png simon@aliyun:~/
#上传文件夹book_colletion到服务器aliyun用户simon的主目录
scp -r ~/Downloads/book_colletion simon@aliyun:~/
下载文件:
scp user@HostName:remote_file_name local_folder
#下载远程服务器的~/readme.md到本地用户主目录
scp simon@aliyun:~/readme.md ~/
#下载远程服务器的~/projects文件夹到本地用户主目录
scp -r simon@aliyun:~/projects ~/
zsh
用户需要注意:
如果使用通配符,那么zsh
会试图将其展开而导致no matches
错误。
不要让zsh
将*号展开;有如下几种方法:
- 将
*
号部分用引号引起来,单双引号都可以。
例如:scp "host:/pic/*.jpg" .
或者scp 'host:/pic/*.jpg' .
。也可以只引用路径部分,例如:scp host:'/pic/*.jpg' .
- 用反斜杆阻止zsh转义:
scp host:/pic/\*.jpg .
- 设置nonomatch选项,让zsh匹配失败时不报错并使用原本内容。
echo "setopt nonomatch" >> ~/.zshrc
或
echo "set -o nonomatch" >> ~/.zshrc