scp命令主要用于Linux中不同主机间复制文件和目录。
scp是Linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
scp是加密的
二、scp使用方式
2.1、命令格式
scp[参数][原路径][目标路径]
命令参数:
-p保留原文件的更改时间,访问时间和访问权限。
-q不显示传输进度条。
-r递归复制整个目录。
-v详尽形式显示输出。
-Pport注意是小写的P,port是指定数据传输用到的端标语
2.2、使用实例
scp命令应用:
1、从本地服务器复制到远程服务器:
(1)复制文件
scp 本地文件路径 远程服务器用户名@远程IP:远程目录
或者
scp 本地文件路径 远程服务器用户名@远程IP:远程文件
或者
scp 本地文件路径 远程IP:远程目录
或者
scp 本地文件路径 远程IP:远程文件
注:
第1,2个指定了用户名,命令执行后须要输入用户密码android linux,第1个仅指定了远程的目录,文件名子不变,第2个指定了文件名
第3,4个没有指定用户名linux下载文件到本地,命令执行后须要输入用户名和密码,第3个仅指定了远程的目录,文件名子不变,第4个指定了文件名
(2)复制目录
命令格式:
scp -r 本地目录路径 远程服务器用户名@远程IP:远程路径
或者
scp -r 本地目录路径 远程服务器IP:远程路径
注:
第1个指定了用户名,命令执行后须要输入用户密码;
第2个没有指定用户名,命令执行后须要输入用户名和密码;
三、scp命令行输入带密码的参数【无需在输入scp后还要再输入远程服务器的密码】
使用sshpass命令
命令格式:
sshpass -p 密码 scp -P 端口 源文件 目标文件
比如,当我须要对远程服务器上传文件,在命令行进行执行,而且须要进行后台运行。当执行了sshpass时,并没有启动进程,服务手动停止。
如下所示
报错缘由:经过查找linux下载文件到本地,发觉是由于权限问题,由于在进行远程上传文件时,此时由于有些文件的用户权限不一样,引起权限出现问题,未能在该用户下进行远程上传
解决方式:
1、可切换至root权限sudo-i
2、然后执行命令
sshpass-p【远程服务器密码】scp-r本地目录路径root@xxx.xxx.xxx.xxx:远程服务器文件路径
如下所示:
通过ps查询进行linux 输入法,发觉并没有启动
缘由:本地服务器与远程服务器并没有进行远程TCP握手联接
解决方式:
1、首先执行scp命令与远程实现文件上传,构建服务器之间的通讯
2、然后再执行sshpass命令,即可实现远程上传,添加&实现后台执行
3、然后查询远程服务器是否早已收到该文件
发觉早已正在上传
成功~~