Linux目录:scp命令

目录

1 scp命令

1.1简介

scp 是 secure copy 的缩写, scp 是一个基于ssh协议实现不同Linux服务器之间的文件和目录拷贝的命令。

scp命令是基于rcp命令的

SCP命令会对所有传输的数据进行加密,以保障数据传输的安全性。

在使用SCP命令进行文件传输时,需要指定源文件的位置,目标服务器的IP地址以及目标路径。如果需要传输整个文件夹,还需要额外添加参数-r进行递归操作。同时,目标服务器会要求进行身份验证,验证通过后,文件传输才会开始。

1.2命令说明

使用:scp [-346ABCOpqRrsTv] [-c cipher] [-D sftp_server_path] [-F ssh_config]

-i identity_file\] \[-J destination\] \[-l limit\] \[-o ssh_option

-P port\] \[-S program\] source ... target 常用参数: * -4:scp时只能使用IPv4地址 * -6:scp时只能使用IPv6地址 * -B:选择批处理模式(禁止询问密码或密码短语)。 * -C:允许压缩,将文件在传输过程中进行压缩,以节省传输时间和带宽 * -s:使用SFTP协议而不是scp协议 * -D sftp_server_path:在使用-s指定的协议时,连接到本地SFTP服务器地址 * -F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh * -i identify_file:选择从中读取用于公钥身份验证的身份(私钥)的文件 * -o ssh_ssh_option:用于向ssh传递选项,如:IdentityFile * -P port:用于指定传输端口,如果ssh的端口改变,需要在此处指定 * -p:保留原文件的修改时间,访问时间 * -q:不显示传输进度条 * -r:递归复制整个目录 ### 1.3 实例 #### 1、从本地复制的远程 ```bash # scp localfile remote_ip:remote_dir scp a1 192.168.92.100:/root # scp localfile remote_ip:remote_file # 在复制的同时还修改了文件名 # 远程服务器有同名文件时会覆盖 scp a1 192.168.92.100:/root/aaa # scp localfile remote_user@remote_ip:remote_file scp a1 [email protected]:/root # scp localfile remote_hostname:remote_file scp a1 com01:/root/yyy # 下面的远程服务器 root@com01:~# ll a1 aaa sss yyy -rw-r--r-- 1 root root 82 Feb 21 09:27 a1 -rw-r--r-- 1 root root 82 Feb 21 09:25 aaa -rw-r--r-- 1 root root 82 Feb 21 09:29 sss -rw-r--r-- 1 root root 82 Feb 21 09:34 yyy ``` 注意: * 1.远程复制时有同名文件时会覆盖 * 2.在向远程服务器复制文件时,如果不指定远程用户名,默认会传输给当前用户名相同的用户 ![在这里插入图片描述](https://file.jishuzhan.net/article/1760521501083176961/eac63f31d6abb59e0e14d491ff426c44.webp) * 3.向指定目标地址时,既可以是目标服务器的IP也可以主机名 #### 2、从远程复制到本地 从远程服务器复制本地只需要把目标地址和源地址修改一下即可 ```bash # 复制到本地目录下 scp con01:/root/a1 . scp con01:/root/a1 ./df ``` #### 3、-r:复制目录 ```bash ######### 本地服务器 root@con01:~# ls haproxy-2.8.5 addons CHANGELOG examples LICENSE reg-tests tests admin CONTRIBUTING haproxy MAINTAINERS scripts VERDATE BRANCHES dev include Makefile src VERSION BSDmakefile doc INSTALL README SUBVE scp -r haproxy-2.8.5 com01:/root/ scp -r haproxy-2.8.5/ com01:/root/ # 以上两种写法都可 # 如果不加 -r 选项会报错:haproxy-2.8.5: not a regular file #######远程服务器 root@com01:~# ls haproxy-2.8.5/ addons CHANGELOG examples LICENSE reg-tests tests admin CONTRIBUTING haproxy MAINTAINERS scripts VERDATE BRANCHES dev include Makefile src VERSION BSDmakefile doc INSTALL README SUBVERS root@com01:~# ``` #### 4、 -p:保留原文件的修改时间,访问时间 ```bash ####### 本地服务器 root@con01:~# stat b1 File: b1 Size: 6 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 786447 Links: 1 Access: (0600/-rw-------) Uid: ( 1000/ smile) Gid: ( 1000/ smile) Access: 2024-02-21 09:48:28.317809644 +0000 Modify: 2024-02-21 09:46:29.587905113 +0000 Change: 2024-02-21 09:47:42.221070217 +0000 Birth: 2024-02-21 09:46:29.587905113 +0000 scp b1 com01:/root/ scp -p b1 com01:/root/bb # 从下面的内容可以看出保留原文件的修改时间,访问时间 ####### 远程服务器 root@com01:~# stat b1 File: b1 Size: 6 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 788380 Links: 1 Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2024-02-21 09:52:37.981073498 +0000 Modify: 2024-02-21 09:52:37.981073498 +0000 Change: 2024-02-21 09:52:37.981073498 +0000 Birth: 2024-02-21 09:52:37.981073498 +0000 root@com01:~# stat bb File: bb Size: 6 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 788381 Links: 1 Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2024-02-21 09:48:28.000000000 +0000 Modify: 2024-02-21 09:46:29.000000000 +0000 Change: 2024-02-21 09:52:46.465445105 +0000 Birth: 2024-02-21 09:52:46.449444403 +0000 root@com01:~# ``` 如果不清楚stat命令可以参考我的这篇文章:[Linux命令:stat命令](https://blog.csdn.net/dl_11/article/details/136172384) #### 5、-P:指定传输数据的端口 ```bash scp -P 13222 b1 com01:/root/bb # 这个主要是ssh的端口,如果ssh端口改变了,此处访问会改变 ``` #### 6、扩展:修改ssh默认端口 ```bash # 修改ssh的配置文件,并重启即可 vim /etc/ssh/sshd_config # 修改sftp上传文件端口 Port 13222 ```

相关推荐
清寒敲代码几秒前
Mysql的备份还原
运维
Mryan200524 分钟前
如何创建一个自行设计的nginx的Docker Image
运维·nginx·docker·容器
AI服务老曹33 分钟前
机器学习算法能够自动学习并使用不同条件下的变化趋势,确保预测结果的准确性的智慧地产开源了
运维·学习·开源·音视频
小草cys1 小时前
ubuntu20.04升级成ubuntu22.04
linux·运维·服务器
Linux内核拾遗1 小时前
使用kvmtool运行和调试Linux内核
linux·kvm
前端小菜鸟一枚s1 小时前
如何使用 Bash 脚本自动化清理 Nacos 日志文件
linux
kfepiza1 小时前
Linux的/proc/sys/net/ipv6/conf/(all,default,interfaceName具体网络接口名称)/ 笔记250405
linux·tcp/ip
charlie1145141912 小时前
IMX6ULL学习整理篇——Linux使用更现代的GPIO操作简单设备
linux·嵌入式硬件·学习·教程·mpu·gpio子系统·pinctl
夏天里的肥宅水2 小时前
Windows连接服务器Ubuntu_MobaXterm
运维·服务器·ubuntu
Cxzzzzzzzzzz2 小时前
Supervisor的安装和使用
运维·后端·python·centos