Linux怎么使用SCP传输文件_Linux跨服务器数据拷贝与限速设置【指南】

SCP是基于SSH加密的安全文件传输工具,支持本地与远程双向复制、端口/密钥指定、目录递归、带宽限制及跳过主机验证等操作。

如果您需要在Linux系统之间安全地传输文件,SCP(Secure Copy Protocol)提供了一种基于SSH加密的可靠方式。以下是使用SCP进行跨服务器数据拷贝及限速设置的具体操作步骤:

一、基础SCP文件传输命令

SCP利用SSH协议建立加密连接,确保传输过程中的数据完整性与机密性。其语法结构固定,支持本地与远程主机之间的双向复制。

1、将本地文件复制到远程服务器:
scp /path/to/local/file username@remote_host:/path/to/remote/directory/

2、从远程服务器下载文件到本地:
scp username@remote_host:/path/to/remote/file /path/to/local/directory/

3、在两台远程服务器之间直接传输(需本地作为跳转):
scp username1@host1:/path/file username2@host2:/path/

二、指定SSH端口与密钥文件

当远程服务器SSH服务运行在非默认端口(22)或使用自定义密钥对认证时,必须显式声明相关参数,否则连接将被拒绝。

1、使用-p参数指定非标准SSH端口:
scp -P 2222 /local/file user@host:/remote/

2、通过-i参数加载私钥文件进行身份验证:
scp -i /path/to/private_key.pem /local/file user@host:/remote/

3、同时指定端口与密钥:
scp -P 2222 -i ~/.ssh/id_rsa_custom file.txt user@host:/home/user/

三、递归传输整个目录

SCP默认仅处理单个文件,若需拷贝包含子目录和文件的完整目录结构,必须启用递归模式,否则会报错“not a regular file”。

1、添加-r参数实现目录级复制:
scp -r /local/directory/ user@host:/remote/parent/

2、注意末尾斜杠含义:
scp -r /local/dir/ user@host:/remote/ 表示复制dir内所有内容;scp -r /local/dir user@host:/remote/ 表示复制dir目录本身

3、配合-v参数查看详细传输过程(可选调试):
scp -rv /local/dir user@host:/remote/

四、限制传输带宽防止网络拥塞

SCP内置限速功能,通过-l参数设定最大传输速率(单位为Kbit/s),适用于共享带宽环境或避免影响其他关键业务流量。

1、将传输速率限制为500 Kbit/s:
scp -l 500 largefile.zip user@host:/remote/

2、换算参考:1000 Kbit/s ≈ 125 KB/s,因此-l 8000对应约1 MB/s

3、结合递归与限速传输目录:
scp -rl 2000 -i /key.pem /data/ user@host:/backup/

五、跳过主机密钥检查提升自动化效率

在脚本化批量传输场景中,交互式确认远程主机指纹会中断执行流程。可通过StrictHostKeyChecking选项禁用该检查,但需确保目标主机可信。

1、添加-o参数跳过主机密钥验证:
scp -o StrictHostKeyChecking=no /file user@host:/dest/

2、同时关闭已知主机检查(避免写入~/.ssh/known_hosts):
scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null /file user@host:/dest/

3、此配置仅建议用于受控内网环境,生产外网环境禁用