Linux-scp命令

发布于:2025-04-22 ⋅ 阅读:(16) ⋅ 点赞:(0)

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/

注意事项

  1. 路径格式

    • 本地路径:/path/to/file./file
    • 远程路径:user@host:/path/to/file
  2. 权限问题

    • 确保目标路径有写入权限。
    • 若使用非默认 SSH 端口,必须通过 -P 指定。
  3. 文件名特殊字符

    • 若文件名含空格或特殊字符,用引号包裹路径: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 查看详细日志排查错误。


网站公告

今日签到

点亮在社区的每一天
去签到