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 root@192.168.92.100:/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.在向远程服务器复制文件时,如果不指定远程用户名,默认会传输给当前用户名相同的用户
  • 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命令

5、-P:指定传输数据的端口

bash 复制代码
scp -P 13222 b1 com01:/root/bb
# 这个主要是ssh的端口,如果ssh端口改变了,此处访问会改变

6、扩展:修改ssh默认端口

bash 复制代码
# 修改ssh的配置文件,并重启即可
vim /etc/ssh/sshd_config
# 修改sftp上传文件端口
Port 13222
相关推荐
cdut_suye6 分钟前
Linux工具使用指南:从apt管理、gcc编译到makefile构建与gdb调试
java·linux·运维·服务器·c++·人工智能·python
qq_4336184411 分钟前
shell 编程(三)
linux·运维·服务器
苹果醋318 分钟前
2020重新出发,MySql基础,MySql表数据操作
java·运维·spring boot·mysql·nginx
两张不够花20 分钟前
Jenkins 持续集成部署
运维·jenkins
Tlzns32 分钟前
Linux网络——UDP的运用
linux·网络·udp
码农土豆38 分钟前
PaddlePaddle飞桨Linux系统Docker版安装
linux·docker·paddlepaddle
Hacker_xingchen43 分钟前
天融信Linux系统安全问题
linux·运维·系统安全
丘狸尾44 分钟前
[cisco 模拟器] ftp服务器配置
android·运维·服务器
黑客老陈1 小时前
新手小白如何挖掘cnvd通用漏洞之存储xss漏洞(利用xss钓鱼)
运维·服务器·前端·网络·安全·web3·xss
张暮笛1 小时前
抓取手机HCI日志
linux