Linux目录:scp命令

本文详细介绍了SCP(SecureCopy)命令,包括其基于SSH协议的加密功能、基本用法、参数说明、实例演示,以及如何指定传输端口和修改SSH配置。重点讲解了如何使用SCP进行安全的文件和目录复制,以及注意事项。
摘要由CSDN通过智能技术生成

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、从本地复制的远程

# 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、从远程复制到本地

从远程服务器复制本地只需要把目标地址和源地址修改一下即可

# 复制到本地目录下
scp con01:/root/a1 .
scp con01:/root/a1 ./df

3、-r:复制目录

######### 本地服务器
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:保留原文件的修改时间,访问时间

####### 本地服务器
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:指定传输数据的端口

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

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

# 修改ssh的配置文件,并重启即可
vim /etc/ssh/sshd_config
# 修改sftp上传文件端口
Port 13222

  • 26
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值