macOS通过scp命令与linux服务器之间进行文件传输

官方帮助:

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

你可能感兴趣的:(MacOS,Linux)