2025-11-19 linux下scp的用法

简介
scp(secure copy)是基于 SSH 的命令行工具,用于在本地和远程主机之间复制文件或目录。它简单、直接,适合一次性快速传输。下面给出常用语法、选项、示例与实用建议,帮助你在日常运维或开发中高效使用 scp。


一、基本语法

scp [选项] <源路径> <目标路径>

源或目标可以是本地路径,也可以是远程路径,远程路径的格式为:user@host:/path/to/file

示例:

  • 本地 -> 远程:scp file.txt user@remote.example.com:/home/user/
  • 远程 -> 本地:scp user@remote.example.com:/home/user/file.txt ./

二、常用选项(一览)

  • -r:递归复制目录(必需用于目录)
  • -P port:指定 SSH 端口(注意是大写 P)
  • -i identity_file:使用指定私钥文件进行认证
  • -p:保留文件的修改时间、访问时间和权限
  • -C:启用压缩(传输文本或可压缩数据时有用)
  • -l limit:带宽限制,单位为千比特/秒(kbit/s)
  • -v:详细输出(调试时使用)
  • -o "SSH选项":传递任意 ssh 配置,例如 -o "StrictHostKeyChecking=no"

三、常见示例

  • 上传单个文件到远程主机:

    scp file.txt deploy@server.example.com:/home/deploy/
    
  • 从远程主机下载文件到当前目录:

    scp deploy@server.example.com:/home/deploy/file.txt ./
    
  • 递归复制目录到远程:

    scp -r mysite/ deploy@server:/var/www/mysite/
    
  • 指定端口和私钥:

    scp -P 2222 -i ~/.ssh/id_rsa file.txt deploy@server:/path/
    
  • 远程到远程(在本地穿针引线,两端都允许 SSH 登录):

    scp user1@host1:/path/file user2@host2:/path/
    
  • 启用压缩并限速(限速 500 kbit/s):

    scp -C -l 500 largefile.tar.gz user@remote:/backup/
    
  • 路径或文件名中包含空格(使用引号):

    scp "my file.txt" user@remote:"/remote/path/with space/"
    

四、实用技巧与注意事项

  • scp 不支持断点续传:如果需要断点续传或增量同步,推荐使用 rsync over SSH,例如:

    rsync -avzP -e "ssh -p 2222" ./localdir/ user@remote:/path/
    
  • 常用主机可在 ~/.ssh/config 中配置别名,避免每次写完整命令:

    Host myserver
      HostName server.example.com
      User deploy
      Port 2222
      IdentityFile ~/.ssh/id_rsa
    

    然后只需 scp file.txt myserver:/path/

  • 权限与路径:目标目录必须有写权限;建议使用绝对路径以避免定位错误(例如 /home/deploy/)。

  • 调试连接问题:加 -v 查看认证与连接过程,帮助定位问题。

  • 安全性:scp 基于 SSH,传输过程被加密。但当需要更多控制或复杂权限、文件过滤时,优先考虑 rsync/sftp。


五、一个小流程示例:把站点上传并部署

  1. 本地打包:
    tar czf site.tar.gz site/
    
  2. 上传到远程临时目录(示例端口 2222):
    scp -P 2222 site.tar.gz deploy@server:/tmp/
    
  3. 远程解压并移动到 web 目录(使用 ssh 远程执行):
    ssh -p 2222 deploy@server 'tar xzf /tmp/site.tar.gz -C /var/www/html && rm /tmp/site.tar.gz'
    

六、结语

scp 使用简单、上手快,适合一两次文件传输或小批量复制。如果你经常同步大量文件、需要断点续传或做增量备份,建议使用 rsync(rsync over ssh)或 sftp。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容