您的位置:

linux scp -r 命令详解

一、介绍

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文件中,即可实现无密登录。