一、介绍
scp是secure copy的缩写,是一个命令行工具,它可以在Linux系统中进行远程文件传输,并支持进行加密。它是remotely copy文件的缩写,是在Unix和Linux系统下基于ssh进行安全的远程文件拷贝命令。
二、基本用法
scp命令有两种使用方式,一种是从本地复制到远程,另一种是从远程复制到本地。其中,-r选项表示复制的是目录。
从本地复制到远程
scp 文件名 用户名@IP地址:目标路径
其中,文件名是本地要复制的文件名,用户名和IP地址是远程要复制到的主机的用户名和IP地址,目标路径是要复制到的目录。
从远程复制到本地
scp 用户名@IP地址:源路径 目标路径
其中,用户名和IP地址是远程要复制的主机的用户名和IP地址,源路径是要复制的远程文件所在的路径,目标路径是要复制到的目录。
三、高级用法
1. 不执行安全检查
scp -o StrictHostKeyChecking=no 文件名 用户名@IP地址:目标路径
在首次连接远程主机时,会提示你是否要连接并添加远程主机的公钥到本地主机的~/.ssh/known_hosts文件中,以便下次连接后进行安全检查。但如果你对远程主机的身份完全信任,这时就可以使用-o选项来关闭安全检查。
2. 设置端口号
scp -P 22 文件名 用户名@IP地址:目标路径
scp默认使用SSH的端口22进行传输。但如果远程主机的SSH端口被修改,这时就需要使用-P选项来设置新的端口号。
3. 显示传输进度
scp -r -v 文件名 用户名@IP地址:目标路径
在传输大文件或大量数据时,可使用-v选项来输出传输的详细信息,同时也能显示进度和传输速度,方便更直观的了解传输的情况。
4. 快速跳过文件存在检查
scp -r -T 文件名 用户名@IP地址:目标路径
如果要传输的文件已经存在,会提示你是否要覆盖其中一个。但如果你不想进行覆盖或者要跳过询问步骤,可以使用-T选项来快速跳过。
5. 限速传输
scp -l 500 文件名 用户名@IP地址:目标路径
有时在进行文件传输时,会占用太多带宽,导致系统其他任务运行缓慢。此时可使用-l选项来限制传输速度,单位为Kbps。
四、常见问题
1. 显示“connection timed out”错误
如果在使用scp进行文件传输时,出现了“connection timed out”的错误提示,这说明网络连接超时了。这时可能是网络环境不稳定,或者远程主机被防火墙拦截了访问。可以通过检查网络连接和防火墙设置来解决这个问题。
2. 只传输差异文件
如果要传输的文件很大,可以使用rsync命令代替scp,该命令可以只传输差异文件,提高传输效率。
3. 多个文件传输
如果要传输多个文件,可以在scp命令中添加多个文件名,或以正则表达式的方式进行匹配。
4. 授权密钥登录
授权密钥登录可以使得scp命令在不输入密码的情况下,直接登录到远程主机进行文件传输。可以通过生成授权密钥,然后将公钥加入到远程主机的~/.ssh/authorized_keys文件中,即可实现无密登录。