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
相关推荐
热爱嵌入式的小许1 小时前
Linux基础项目开发1:量产工具——显示系统
linux·运维·服务器·韦东山量产工具
韩楚风5 小时前
【linux 多进程并发】linux进程状态与生命周期各阶段转换,进程状态查看分析,助力高性能优化
linux·服务器·性能优化·架构·gnu
陈苏同学5 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
Ambition_LAO5 小时前
解决:进入 WSL(Windows Subsystem for Linux)以及将 PyCharm 2024 连接到 WSL
linux·pycharm
Pythonliu75 小时前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我5 小时前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
追风赶月、5 小时前
【Linux】进程地址空间(初步了解)
linux
栎栎学编程5 小时前
Linux中环境变量
linux
我是哈哈hh6 小时前
专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结
服务器·数据结构·c++·算法·机器学习·深度优先·剪枝
郭二哈6 小时前
C++——模板进阶、继承
java·服务器·c++