网络管理

查看网络配置

网卡信息
网卡名称:

旧名称,eth0 eth1 (Ethernet)
新名称,根据网卡的拓扑类型命名。例如ens32,eno4。
linux网络接口传统的名称为eth0 eth1 eth2 …ethN。然而这种机制会引起一些问题,例如网络接口的增加和删除。

在rhel7或者更高版本中,接口命名规则如下:

前2个字符:Ethernet 接口以en开头,WLAN接口以wl开头,WWAN接口以ww开头。
下一个字符:o(onboard)代表板载设备,s(slot)代表PCI热插拔,p代表pci接口网卡。
最后N表示index ID或者port。
例如

eno1,代表Ethernet 类型、板载设备、端口号是1的网卡。

wlp4s0,代表位于PCI总线4上插槽0中的WLAN卡。如果该卡是一个多功能设备(具有多个端口或者具有一些其他功能)。示例,enp0s1f0代表位于PCI总线0上插槽1中的以太网卡的功能0。

如果无法分配固定接口名,将使用传统方式ethN命名。

查看 link
关注mac地址。

# 查看网络设备清单
[root@localhost ~ 01:47:04]# ip -br link
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> 
ens33            UP             00:0c:29:d7:bf:ee <BROADCAST,MULTICAST,UP,LOWER_UP> 

# 查看单个网络设备信息
[root@localhost ~ 01:47:33]# ip link show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:d7:bf:ee brd ff:ff:ff:ff:ff:ff

查看 IP
关注IP地址和掩码位数:10.1.8.10/24。

[root@localhost ~ 01:48:50]# ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128 
ens33            UP             10.1.8.10/24 fe80::53c8:38d1:b8b6:eab7/64 


[root@localhost ~ 01:49:45]# ip addr show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:d7:bf:ee brd ff:ff:ff:ff:ff:ff
    inet 10.1.8.10/24 brd 10.1.8.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::53c8:38d1:b8b6:eab7/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

查看 route
default代表主机的网关,也就是10.1.8.2。

[root@localhost ~ 01:50:26]# ip route 
default via 10.1.8.2 dev ens33 proto static metric 100 
10.1.8.0/24 dev ens33 proto kernel scope link src 10.1.8.10 metric 100 
还可以使用以下命令
[root@server ~ 11:46:03]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.1.8.2        0.0.0.0         UG    100    0        0 ens33
10.1.8.0        0.0.0.0         255.255.255.0   U     100    0        0 ens33
# 或者
[root@server ~ 11:47:11]# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.1.8.2        0.0.0.0         UG        0 0          0 ens33
10.1.8.0        0.0.0.0         255.255.255.0   U         0 0          0 ens33

说明:

直连网络10.1.8.0/24和192.168.122.0/24,可以 直接通信。
其他网络中主机,通过默认路由发送到目标,这里是default对应的条目,也就是10.1.8.2。

查看 dns
/etc/resolv.conf 文件中nameserver指明服务想哪个DNS服务器查询域名对应IP

[root@localhost ~ 01:56:41]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 223.5.5.5
nameserver 223.6.6.6

测试网络连通性

ping 测试

# ping 测试,选项-c控制ping次数,选项-w控制ping超时时间
[root@localhost ~ 02:01:32]# ping baidu.com -c 4 -w 2
PING baidu.com (111.63.65.103) 56(84) bytes of data.
64 bytes from 111.63.65.103 (111.63.65.103): icmp_seq=1 ttl=128 time=35.9 ms
64 bytes from 111.63.65.103 (111.63.65.103): icmp_seq=2 ttl=128 time=36.5 ms

--- baidu.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1017ms
rtt min/avg/max/mdev = 35.931/36.241/36.551/0.310 ms

# 说明:
# 1- 能够解析出ip 说明DNS配置正确
# 2- 能ping 通说明我们的网关配置正确

mtr 路由跟踪

# ping 主机不通,此时跟踪路由,查看数据最远到达的位置

[root@localhost ~ 02:04:34]# yum install -y mtr

[root@localhost ~ 02:07:25]# mtr -n 1.1.1.1

在这里插入图片描述

ss 工具
/etc/services 文件存储常见端口和服务对应关系

[root@localhost ~ 02:08:08]# vim /etc/services 

ftp-data        20/tcp
ftp-data        20/udp
# 21 is registered to ftp, but also used by fsp
ftp             21/tcp
ftp             21/udp          fsp fspd
ssh             22/tcp                          # The Secure Shell (SSH) Protocol
ssh             22/udp                          # The Secure Shell (SSH) Protocol
telnet          23/tcp
telnet          23/udp
...
nameserver      42/tcp          name            # IEN 116
nameserver      42/udp          name            # IEN 116
nicname         43/tcp          whois
nicname         43/udp          whois
tacacs          49/tcp                          # Login Host Protocol (TACACS)
tacacs          49/udp                          # Login Host Protocol (TACACS)
re-mail-ck      50/tcp                          # Remote Mail Checking Protocol
re-mail-ck      50/udp                          # Remote Mail Checking Protocol
...

ss 命令用于查看系统中网络状态信息。

以前使用 netstat 查看网络状态信息,使用方法等效与 ss 命令。

# 默认显示是 ESTAB 状态
[root@localhost ~ 02:14:43]# ss | grep :ssh
tcp    ESTAB      0      36     10.1.8.10:ssh                  10.1.8.1:59727  

# 只看 LISTEN,包含IPv4和IPv6
[root@localhost ~ 02:18:10]# ss -l | grep :ssh
tcp    LISTEN     0      128     *:ssh                   *:*                    
tcp    LISTEN     0      128      [::]:ssh                    [::]:*   

# 查看 ipv4 所有(LISTEN和ESTAB)网络状态
[root@localhost ~ 02:20:20]# ss -a4|grep :ssh
tcp    LISTEN     0      128     *:ssh                   *:*                    
tcp    ESTAB      0      36     10.1.8.10:ssh                  10.1.8.1:59727  
# -n 将服务的名称显示为数字
[root@localhost ~ 02:20:35]# ss -an4|grep :22
tcp    LISTEN     0      128       *:22                    *:*                  
tcp    ESTAB      0      36     10.1.8.10:22                 10.1.8.1:59727   

# -p 显示相应的进程
[root@localhost ~ 02:21:36]# ss -lnp4|grep :22
tcp    LISTEN     0      128       *:22                    *:*                   users:(("sshd",pid=949,fd=3))

模拟环境

[root@server ~ 02:34:24]# yum install -y nginx
[root@server ~ 02:34:38]# systemctl start nginx.service
[root@server ~ 02:34:45]# echo "Hello World" > /usr/share/nginx/html/index.html
[root@server ~ 02:34:56]# curl http://10.1.8.10
Hello World



[root@server ~ 02:35:06]# yum install -y httpd
[root@server ~ 02:35:25]# systemctl start httpd
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
[root@server ~ 02:35:27]# systemctl status httpd.service|grep use
5月 16 02:35:26 server.liang.cloud httpd[1391]: (98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
5月 16 02:35:26 server.liang.cloud httpd[1391]: (98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80

查找端口被哪个程序使用

[root@server ~ 02:36:01]# ss -lnp4|grep :80
tcp    LISTEN     0      128       *:80                    *:*                   users:(("nginx",pid=1344,fd=6),("nginx",pid=1343,fd=6),("nginx",pid=1342,fd=6))

解决方法

[root@server ~ 02:39:02]# systemctl stop nginx
[root@server ~ 02:40:51]# systemctl start httpd

配置网络

网络配置是由 NetworkManager 服务管理的,确保该服务开机自启。

环境准备
虚拟机新增加一个NAT网卡。

自动获取的前提条件是直连的网络中有dhcp服务器。

对于 vmware workstations:

在这里插入图片描述

在这里插入图片描述

nmtui 命令
自动配置

[root@server ~ 15:25:20]# nmtui

在这里插入图片描述

设备控制
DEVICE,是设备,也就是网卡。
CONNECTION,是连接,也就是网卡的配置。
一个 DEVICE 可以有多个配置,同一时刻只能激活一个配置。

# 显示设备列表状态信息
[root@server ~ 15:37:10]# nmcli device
DEVICE  TYPE      STATE   CONNECTION   
ens33   ethernet  已连接  ens33        
ens35   ethernet  已连接  ens35-static 
lo      loopback  未托管  --       

# 断开设备链接
[root@server ~ 15:41:51]# nmcli device disconnect ens35
成功断开设备 "ens35"。
[root@server ~ 15:42:08]# nmcli device
DEVICE  TYPE      STATE   CONNECTION 
ens33   ethernet  已连接  ens33      
ens35   ethernet  已断开  --         
lo      loopback  未托管  --  
# 连接设备
[root@server ~ 15:43:43]# nmcli device connect ens35
成功用 "ens3541afed9c-64a2-4df4-bbe8-01bb45605726" 激活了设备 ""。
[root@server ~ 15:43:58]# nmcli device
DEVICE  TYPE      STATE   CONNECTION   
ens33   ethernet  已连接  ens33        
ens35   ethernet  已连接  ens35-static 
lo      loopback  未托管  --      
# 显示特定设备详细信息
[root@server ~ 15:44:04]# nmcli device show ens35
GENERAL.DEVICE:                         ens35
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         00:0C:29:BE:12:A1
GENERAL.MTU:                            1500
GENERAL.STATE:                          100(已连接)
GENERAL.CONNECTION:                     ens35-static
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/10
WIRED-PROPERTIES.CARRIER:               开
IP4.ADDRESS[1]:                         10.1.8.100/24
IP4.GATEWAY:                            --
IP4.ROUTE[1]:                           dst = 10.1.8.0/24, nh = 0.0.0.0, mt = 101
IP6.ADDRESS[1]:                         fe80::e8a5:817d:8baa:4262/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 101
IP6.ROUTE[2]:                           dst = ff00::/8, nh = ::, mt = 256, table=255

[root@server ~ 15:44:50]# nmcli device show ens35 | grep IP4
IP4.ADDRESS[1]:                         10.1.8.100/24
IP4.GATEWAY:                            --
IP4.ROUTE[1]:                           dst = 10.1.8.0/24, nh = 0.0.0.0, mt = 101

动态获取

# 查看connection清单
[root@server ~ 15:46:55]# nmcli connection 
NAME          UUID                                  TYPE      DEVICE 
ens33         133bffdc-d902-42d8-857d-bcb3edc02adf  ethernet  ens33  
ens35-static  41afed9c-64a2-4df4-bbe8-01bb45605726  ethernet  ens35  
ens35-auto    23fb2af1-bde6-30fd-a6d6-4c224ccac87a  ethernet  -- 

# 删除连接
[root@server ~ 15:48:17]# nmcli connection delete ens35
错误:未知的连接 "ens35"。
错误:无法删除未知连接:'ens35'。
[root@server ~ 15:48:58]# nmcli connection delete ens35-static 
成功删除连接 "ens35-static" (41afed9c-64a2-4df4-bbe8-01bb45605726)。

# 添加网卡配置:自动获取IP地址
[root@server ~ 15:49:30]# nmcli connection add type ethernet ifname ens35 con-name ens35-dynamic
连接 "ens35-dynamic" (d6a61206-1164-47a7-afba-91eddcda87da) 已成功添加。


[root@server ~ 15:51:27]# nmcli connection show
NAME           UUID                                  TYPE      DEVICE 
ens33          133bffdc-d902-42d8-857d-bcb3edc02adf  ethernet  ens33  
ens35-auto     23fb2af1-bde6-30fd-a6d6-4c224ccac87a  ethernet  ens35  
ens35-dynamic  d6a61206-1164-47a7-afba-91eddcda87da  ethernet  --   
[root@server ~ 15:51:53]# nmcli connection show ens35-dynamic 
connection.id:                          ens35-dynamic
connection.uuid:                        d6a61206-1164-47a7-afba-91eddcda87da
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              ens35
connection.autoconnect:                 是
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0(default)
connection.auth-retries:                -1
connection.timestamp:                   0
connection.read-only:                   否
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1(default)
connection.secondaries:                 --
connection.gateway-ping-timeout:        0
connection.metered:                     未知
connection.lldp:                        default
connection.mdns:                        -1(default)
connection.llmnr:                       -1(default)
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          否
802-3-ethernet.mac-address:             --
802-3-ethernet.cloned-mac-address:      --

# 修改配置指定获取IP方式
[root@server ~ 15:54:19]# nmcli connection modify ens35-dynamic ipv4.method auto

[root@server ~ 15:54:27]# nmcli connection up ens35-dynamic 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/12)

静态配置

# 添加一个静态配置的连接
[root@server ~ 15:55:17]# nmcli connection add type ethernet ifname ens35 con-name ens35-static ipv4.method manual ipv4.addresses 10.1.8.10/24
连接 "ens35-static" (1aa2ebc9-76c7-401b-9a41-cca1f55f0218) 已成功添加。

# 修改 ipv4 相关属性
[root@server ~ 15:56:45]# nmcli connection modify ens35-static ipv4.gateway 10.1.8.2 ipv4.dns 10.1.8.2
# 激活连接
[root@server ~ 15:58:08]# nmcli connection up ens35-dynamic 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/13)
# 查看状态
[root@server ~ 15:58:41]# nmcli connection 
NAME           UUID                                  TYPE      DEVICE 
ens33          133bffdc-d902-42d8-857d-bcb3edc02adf  ethernet  ens33  
ens35-dynamic  d6a61206-1164-47a7-afba-91eddcda87da  ethernet  ens35  
ens35-auto     23fb2af1-bde6-30fd-a6d6-4c224ccac87a  ethernet  --     
ens35-static   1aa2ebc9-76c7-401b-9a41-cca1f55f0218  ethernet  -- 

其他操作
示例

# 停用连接
[root@server ~]# nmcli connection down ens192-static
成功停用连接 "ens192-static"(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/20)

[root@server ~]# nmcli connection show
NAME             UUID                                  TYPE      DEVICE 
ens160           5f61d96b-a284-41e9-9bf6-5cf3de6250cd  ethernet  ens160 
ens192-dynamic   27d7dd0a-a5d1-4ed8-81ad-1051f89f89d1  ethernet  ens192 
ens192-static    652c8436-ac91-4697-b4ad-43d8dac83f8f  ethernet  --   

# 根据需要配置路由
[root@server ~]# nmcli connection modify ens192-static ipv4.routes "192.168.50.0/24 10.1.8.2"

网络配置文件
==提示:==尽量不要通过手动修改配置,来配置网络。

[root@server ~ 15:59:03]# cat /etc/sysconfig/network-scripts/ifcfg-ens35-dynamic
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens35-dynamic
UUID=d6a61206-1164-47a7-afba-91eddcda87da
DEVICE=ens35
ONBOOT=yes

# 静态配置
[root@server ~ 16:01:18]# cat /etc/sysconfig/network-scripts/ifcfg-ens35-static 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=10.1.8.10
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens35-static
UUID=1aa2ebc9-76c7-401b-9a41-cca1f55f0218
DEVICE=ens35
ONBOOT=yes
GATEWAY=10.1.8.2
DNS1=10.1.8.2

文件归档和备份

归档和压缩文件对于创建备份和通过网络传输数据非常有用。

用于创建和使用备份存档的最古老和最常用的命令之一是 tar 命令。

tar 可以将大量文件集合到一个文件(存档)中,还可以使用 gzip,bzip2或xz压缩来压缩存档。
在这里插入图片描述
tar 包管理
创建一个 tar 包

# 创建tar包,确保用户有权限访问目标文件
[liang@localhost ~ 16:09:01]$ tar -cf etc.tar /etc
tar: 从成员名中删除开头的“/”
tar: /etc/crypttab:无法 open: 权限不够
tar: /etc/grub.d:无法 open: 权限不够
tar: /etc/pki/CA/private:无法 open: 权限不够
tar: /etc/pki/rsyslog:无法 open: 权限不够
tar: /etc/lvm/archive:无法 open: 权限不够
tar: /etc/lvm/backup:无法 open: 权限不够
tar: /etc/lvm/cache:无法 open: 权限不够
tar: /etc/cron.daily/logrotate:无法 open: 权限不够
tar: /etc/gshadow:无法 open: 权限不够
tar: /etc/shadow-:无法 open: 权限不够
tar: /etc/securetty:无法 open: 权限不够
tar: /etc/shadow:无法 open: 权限不够
tar: /etc/sysconfig/ip6tables-config:无法 open: 权限不够
.....
# 没有权限读取的文件,当然无法打包
# root 用户可以打包所有文件
[root@localhost ~ 16:10:08]# tar -cf etc.tar /etc
tar: 从成员名中删除开头的“/”
# 注意打包的时候,会将文件的第一个字符/剔除掉。解压的时候,默认解压到当前位置。

# 再次打包,如果存在相同的tar包,不会提示是否覆盖
[root@localhost ~ 16:10:25]# tar -cf etc.tar /etc
tar: 从成员名中删除开头的“/”

# 通过添加日期,确保每天打包的文件名不一致
[root@localhost ~ 16:11:54]# ls -l etc*
-rw-r--r-- 1 root root 30085120 5月  16 16:11 etc-20260516.tar
-rw-r--r-- 1 root root 30085120 5月  16 16:10 etc.tar

查看 tar 包中文件

# 查看tar包内容
[root@localhost ~ 16:12:07]# tar -t -f etc-20260516.tar
etc/
etc/fstab
etc/crypttab
etc/mtab
etc/resolv.conf
etc/grub.d/
etc/grub.d/00_header
etc/grub.d/01_users
etc/grub.d/10_linux
etc/grub.d/20_linux_xen
etc/grub.d/20_ppc_terminfo
etc/grub.d/30_os-prober
...

# 配合grep过滤
[root@localhost ~ 16:13:36]# tar -t -f etc-20260516.tar|grep etc/host
etc/host.conf
etc/hosts
etc/hosts.allow
etc/hosts.deny
etc/hostname

提取 tar 包中文件

# 提取所有文件
[root@localhost ~ 16:14:45]# tar -xf etc-20260516.tar
# 查看其中一个子目录
root@localhost ~ 16:16:34]# yum install -y tree

[root@localhost ~ 16:17:49]# tree -L 1 etc/yum
etc/yum
├── fssnap.d
├── pluginconf.d
├── protected.d
├── vars
└── version-groups.conf

4 directories, 1 file
# 提取部分文件
[root@localhost ~ 16:17:59]# tar -t -f etc-20260516.tar|grep etc/host
etc/host.conf
etc/hosts
etc/hosts.allow
etc/hosts.deny
etc/hostname
[root@localhost ~ 16:22:26]# tar -xf etc-20260516.tar $(tar -t -f etc-20260516.tar|grep etc/host)
[root@localhost ~ 16:22:48]# tree etc
etc
├── adjtime
├── aliases
├── aliases.db
├── alternatives
│   ├── ld -> /usr/bin/ld.bfd
│   ├── libnssckbi.so.x86_64 -> /usr/lib64/pkcs11/p11-kit-trust.so
│   ├── mta -> /usr/sbin/sendmail.postfix
│   ├── mta-aliasesman -> /usr/share/man/man5/aliases.postfix.5.gz
│   ├── mta-mailq -> /usr/bin/mailq.postfix
....
611 directories, 1757 files

tar 包中追加文件

[root@localhost ~ 16:27:08]# tar -r -f etc-20260516.tar /usr/share/doc/at-3.1.13/timespec
tar: 从成员名中删除开头的“/”
tar: /usr/share/doc/at-3.1.13/timespec:无法 stat: 没有那个文件或目录

删除 tar 包中文件

[root@localhost ~ 16:29:23]# tar --delete -f etc-20260516.tar usr/share/doc/at-3.1.13/timespec
[root@localhost ~ 16:30:08]# tar -tf etc-20260516.tar |grep timespec

tar 包压缩管理

tar 命令支持多种压缩方法:

gzip:-z, --gzip 文件名通常以.tar.gz结尾。最快,最老,使用最广泛。
bzip2:-j, --bzip2 文件名通常以.tar.bz2结尾。压缩后比gzip小,没gzip使用广泛。
xz:-J, --xz 文件名通常以.tar.xz结尾。比较新,更好的压缩比
压缩的效果取决于被压缩的对象,例如已经压缩的图片或者rpm包,压缩效果不明显。

# 确保相关压缩工具已经安装了
[root@localhost ~ 16:30:35]# yum install gzip bzip2 xz
# gzip压缩
[root@localhost ~ 16:34:56]# time tar -czf etc.tar.gz /etc
tar: 从成员名中删除开头的“/”

real	0m0.552s
user	0m0.110s
sys	0m0.459s
# bzip2 压缩
[root@localhost ~ 16:35:06]# time tar -cjf etc.tar.bz2 /etc
tar: 从成员名中删除开头的“/”

real	0m1.271s
user	0m1.030s
sys	0m0.264s

# xz 压缩
[root@localhost ~ 16:35:40]# time tar -cJf etc.tar.xz /etc
tar: 从成员名中删除开头的“/”

real	0m5.148s
user	0m2.087s
sys	0m3.100s
[root@localhost ~ 16:36:21]# ls -lh etc.tar.*
-rw-r--r-- 1 root root 8.8M 5月  16 16:35 etc.tar.bz2
-rw-r--r-- 1 root root  10M 5月  16 16:35 etc.tar.gz
-rw-r--r-- 1 root root 7.1M 5月  16 16:36 etc.tar.xz

# 查看压缩的 tar 包不需要指定压缩选项
[root@localhost ~ 16:36:28]# tar -tf etc.tar.gz
etc/
etc/fstab
etc/crypttab
etc/mtab
etc/resolv.conf
etc/grub.d/
etc/grub.d/00_header
etc/grub.d/01_users
etc/grub.d/10_linux
etc/grub.d/20_linux_xen
etc/grub.d/20_ppc_terminfo
etc/grub.d/30_os-prober
etc/grub.d/40_custom
etc/grub.d/41_custom
etc/grub.d/README
etc/grub.d/00_tuned
etc/pki/
....

系统间复制文档
windows 和 Linux 之间传输
xftp 工具

在这里插入图片描述
xshell 工具
Linux服务器安装 lrzsz 软件包。该方式传输速度比ftp慢。

[root@localhost ~ 16:39:29]# yum install -y lrzsz

上传:直接将文件拖拽到命令行窗口即可。

拉取:使用 sz 工具,并指定保存位置。
在这里插入图片描述
Linux 之间传输
scp 命令
scp,全名secure copy,也就是安全复制,是基于ssh协议,也就是说Linux服务器要开启ssh服务。

为了方便上传和下载,提前配置好秘钥登录服务器。


scp 命令缺点:不管目的位置是否有文件,总是再复制一次,可以理解为全量备份。缺少比对功能。

rsync 命令
Rsync(Remote Synchronize)是一款开源的、快速的、多功能的、远程数据同步备份工具,并且支持多种操作系统平台运行。

Rsync具有本地与远程两台主机之间的数据快速复制同步镜像、远程备份等功能,该功能类似scp,但是优于scp功能,还具有本地不同分区目录之间全量及增量复制数据。

Rsync同步数据镜像时,通过“quick check”算法,仅同步大小或最后修改时间发生变化的文件或目录,当然也可以根据权限,属主等属性变化的同步,所以可以实现快速同步。

前提:客户端和服务端都要提前安装好 rsync 软件包。

# 安装 rsync
[root@localhost ~ 16:49:51]# yum install -y rsync

shell 模式
shell 模式是基于 sshd 服务传送。

语法:

rsync [OPTION]… SRC DEST
rsync [OPTION]… SRC [USER@]HOST:DEST
rsync [OPTION]… [USER@]HOST:SRC DEST

常用选项:

-n 参数执行空运行,与真实执行显示结果一致,但是没有做任何改变。
-v 显示执行过程中详细输出。
-a 代表“archive mode”,同时启用参数:-r -l -p -t -g -o -D
-r 递归同步整个文件夹
-l 同步软连接
-p 保留权限
-t 保留时间戳
-g 保留所属组
-o 保留所有者
-D 同步设备文件
说明:

-A,同步时保留ACLs内容。
-X 同步时保留selinux内容。-a,不同步acl selinux内

# 准备文件
[root@client ~ 16:52:56]# mkdir Pictures
[root@client ~ 16:55:42]# touch Pictures/snap{1..5}.jpg
# 首次同步
[root@client ~ 16:55:49]# rsync -av Pictures root@server
sending incremental file list
created directory root@server
Pictures/
Pictures/snap1.jpg
Pictures/snap2.jpg
Pictures/snap3.jpg
Pictures/snap4.jpg
Pictures/snap5.jpg

sent 345 bytes  received 149 bytes  988.00 bytes/sec
total size is 0  speedup is 0.00

# 再次同步
[root@client ~ 16:58:09]# rsync -av Pictures root@server:
root@server's password: 
sending incremental file list
Pictures/
Pictures/snap1.jpg
Pictures/snap2.jpg
Pictures/snap3.jpg
Pictures/snap4.jpg
Pictures/snap5.jpg

sent 345 bytes  received 115 bytes  102.22 bytes/sec
total size is 0  speedup is 0.00

# 更新部分文件时间戳,再同步
[root@client ~ 16:58:35]# touch Pictures/snap{1,2}*
[root@client ~ 16:59:19]# rsync -av Pictures root@server:
root@server's password: 
sending incremental file list
Pictures/snap1.jpg
Pictures/snap2.jpg

sent 235 bytes  received 55 bytes  44.62 bytes/sec
total size is 0  speedup is 0.00

# 删除 SRC 中文件,默认不会同步删除DEST中文件
[root@client ~ 16:59:31]# rm -f Pictures/snap5.jpg
[root@client ~ 17:00:14]# rsync -av Pictures root@server:
root@server's password: 
sending incremental file list
Pictures/

sent 141 bytes  received 20 bytes  35.78 bytes/sec
total size is 0  speedup is 0.00

# 使用选项 --delete 同步删除 DEST 中文件
[root@client ~ 17:00:27]# rsync -av Pictures root@server: --delete
root@server's password: 
sending incremental file list
deleting Pictures/snap5.jpg

sent 142 bytes  received 35 bytes

将目标文件拉取到本地,操作过程一致。

同步注意事项:

文件访问时间等属性、读写等权限、文件内容等有任何变动,都会被认为修改。
目标目录下如果文件比源目录还新,则不会同步。
源路径的最后是否有斜杠有不同的含义:
有斜杠,只是复制目录中的文件。
没有斜杠的话,不但要复制目录中的文件,还要复制目录本身。
daemon 模式
daemon 模式,不依赖 ssh 服务。

daemon 模式要求:服务端部署 rsynrc 服务。

语法1:源路径或目的路径的主机名后面包含两个冒号。

语法2:rsync://URL格式。

rsync [OPTION]… SRC [USER@]HOST::DEST
rsync [OPTION]… [USER@]HOST::SRC DEST
rsync [OPTION]… rsync://[USER@]HOST[:PORT]/SRC [DEST]
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐