Linux-scp命令
scp
(Secure Copy Protocol)是基于 SSH 的安全文件传输命令,用于在本地和远程主机之间加密传输文件或目录。以下是详细用法和示例:
基本语法
scp [选项] 源文件 目标路径
常用选项
选项 | 描述 |
---|---|
-P 端口号 | 指定 SSH 端口(默认 22) |
-r | 递归复制目录(传输文件夹时必选) |
-C | 启用压缩(节省带宽) |
-v | 显示详细传输信息(调试用) |
-p | 保留文件权限和时间戳 |
-i 密钥文件 | 使用指定的 SSH 私钥文件 |
常见场景示例
1. 本地 → 远程
# 复制文件到远程主机的 /home/user 目录
scp local_file.txt user@remote_host:/home/user/# 指定 SSH 端口(如 2222)
scp -P 2222 local_file.txt user@remote_host:/path/# 复制整个目录
scp -r local_dir/ user@remote_host:/path/
2. 远程 → 本地
# 从远程主机下载文件到当前目录
scp user@remote_host:/path/remote_file.txt .# 从远程主机下载目录
scp -r user@remote_host:/path/remote_dir/ .
3. 远程 → 远程
# 直接在两台远程主机间传输(文件流经本地)
scp user@remote_host1:/path/file.txt user@remote_host2:/path/
高级用法
1. 使用 SSH 密钥认证
# 指定密钥文件(避免密码输入)
scp -i ~/.ssh/id_rsa local_file.txt user@remote_host:/path/
2. 限制传输带宽(单位:Kbit/s)
scp -l 1000 large_file.iso user@remote_host:/path/ # 限制为 1000 Kbit/s
3. 静默模式(不显示进度)
scp -q local_file.txt user@remote_host:/path/
注意事项
-
路径格式:
- 本地路径:
/path/to/file
或./file
- 远程路径:
user@host:/path/to/file
- 本地路径:
-
权限问题:
- 确保目标路径有写入权限。
- 若使用非默认 SSH 端口,必须通过
-P
指定。
-
文件名特殊字符:
- 若文件名含空格或特殊字符,用引号包裹路径:
scp "file name.txt" user@host:/path/
- 若文件名含空格或特殊字符,用引号包裹路径:
替代工具推荐
rsync
:更高效的文件同步工具,支持增量传输。sftp
:交互式文件传输,适合复杂操作。rsync
over SSH:结合 SSH 加密和rsync
的高效性:rsync -avz -e 'ssh -p 2222' local_dir/ user@remote_host:/path/
若遇到问题,可通过 scp -v
查看详细日志排查错误。