SCP 命令教程:安全文件传输指南

SCP(Secure Copy Protocol)是基于 SSH 的安全文件传输协议,适用于 本地与远程服务器之间两个远程服务器之间 加密传输文件。本教程涵盖常用场景和进阶技巧。


📖 核心语法

scp [参数] 源文件路径 目标路径

路径格式说明

类型格式示例说明
本地路径/home/user/file.txt直接使用绝对或相对路径
远程路径user@remote:/path/to/file需包含用户名、主机名/IP和路径

🚀 常用场景

1. 本地 → 远程服务器

# 上传单个文件
scp local_file.txt user@remote_host:/target/directory/

# 上传整个目录(递归操作)
scp -r local_folder/ user@remote_host:/remote/path/

2. 远程服务器 → 本地

# 下载单个文件
scp user@remote_host:/remote/file.txt /local/directory/

# 下载目录(保留权限)
scp -rp user@remote_host:/remote/folder/ ./local_backup/

3. 服务器间直接传输

# 无需经过本地中转
scp user1@host1:/path/file user2@host2:/destination/

🔧 关键参数详解

参数作用示例
-P指定 SSH 端口(默认22)scp -P 2222 file.txt user@host:/path
-r递归复制目录scp -r dir/ user@host:/backup
-p保留文件修改时间和权限scp -p data.log user@host:/logs
-l限速(单位:Kbit/s)scp -l 512 large_file.iso user@host:/
-v显示详细传输过程(调试用)scp -v debug.log user@host:/tmp
-C启用压缩(节省带宽)scp -C archive.tar.gz user@host:/

⚠️ 注意事项

  1. 路径准确性
    • 远程路径需写绝对路径(如 /home/user/
    • 使用 ~ 可能因环境不同导致错误
  2. 覆盖风险
    SCP 默认覆盖同名文件,建议先备份
  3. 通配符处理
# 错误!SCP不支持远程路径通配符
scp user@host:/tmp/*.log ./  
# 正确方式:先在远程执行 tar 压缩
ssh user@host "tar czf - /tmp/*.log" | tar xzf - -C ./

🔍 错误处理

错误现象解决方案
Permission denied检查目标目录写入权限,或使用 sudo
No such file or directory确认路径是否存在(区分大小写)
Connection refused检查 SSH 服务状态和防火墙规则
Host key verification failed删除 ~/.ssh/known_hosts 中对应条目

🛠️ 替代工具对比

工具优点适用场景
rsync增量同步、断点续传大文件/定期备份
sftp交互式操作、文件管理需要浏览目录结构时
curl支持 HTTP/FTP 协议非SSH环境下的简单传输

💡 实战示例

压缩传输大文件

# 本地压缩后传输(节省带宽)
tar czf - big_folder | scp -C - user@host:/backup/

跨跳板机传输

# 通过跳板机中转(-o ProxyJump)
scp -o ProxyJump=jump_user@jump_host file.txt target_user@target_host:/

掌握 SCP 可显著提升服务器管理效率。建议结合 rsync 处理频繁更新的文件,并通过 man scp 查看完整文档。

### SCP命令使用教程 SCP(Secure Copy Protocol)是基于SSH协议的文件传输工具,用于在本地计算机和远程计算机之间安全地复制文件[^4]。以下是SCP命令的详细使用方法、示例及语法。 #### 基本语法 SCP命令的基本语法如下: ```bash scp [options] source destination ``` - `source`:源文件路径。 - `destination`:目标文件路径。 - `[options]`:可选参数,用于指定端口、递归复制等操作[^5]。 #### 参数说明 以下是一些常用的SCP命令参数及其功能: - `-P`:指定远程主机的端口号[^5]。 - `-r`:递归复制目录及其内容[^5]。 - `-p`:保留文件的修改时间和权限[^5]。 - `-q`:安静模式,不显示传输进度。 - `-C`:启用压缩数据传输,减少网络带宽使用。 #### 示例代码 1. **将本地文件复制到远程服务器** 将本地文件`file.txt`复制到远程服务器的`/home/user/`目录下: ```bash scp file.txt user@remote-server:/home/user/ ``` 2. **从远程服务器下载文件到本地** 从远程服务器下载`/path/to/file.txt`到本地当前目录: ```bash scp user@remote-server:/path/to/file.txt . ``` 3. **指定非默认端口进行文件传输** 使用端口`29022`将本地文件`file.txt`复制到远程服务器: ```bash scp -P 29022 file.txt user@remote-server:./ ``` 4. **递归复制整个目录** 将本地目录`mydir`递归复制到远程服务器的`/home/user/`目录下: ```bash scp -r mydir user@remote-server:/home/user/ ``` 5. **压缩传输以减少带宽使用** 使用压缩选项`-C`将本地文件`file.txt`复制到远程服务器: ```bash scp -C file.txt user@remote-server:/home/user/ ``` 6. **保留文件的时间戳和权限** 复制文件时保留其修改时间和权限: ```bash scp -p file.txt user@remote-server:/home/user/ ``` #### 注意事项 - SCP命令使用SSH协议进行加密传输,因此比未加密的FTP更安全[^4]。 - 相较于`rsync`,SCP虽然速度稍慢,但不会显著增加系统资源消耗[^2]。 - 如果需要传输大量小文件,建议考虑硬盘I/O的影响[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我不是少爷.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值