文章目录
- Linux网络管理、文件归档与远程同步实战
-
- 前言
- 一、网络管理:nmcli 命令详解
-
- 1.1 概念澄清
- 1.2 网络启停
- 1.3 设备管理
- 1.4 连接管理
- 1.5 网络配置文件
- 1.6 主机名与名称解析
- 二、文件归档和备份:tar 命令
-
- 2.1 tar 命令语法
- 2.2 创建和查看
- 2.3 提取文件
- 2.4 压缩归档
- 三、系统间复制文件
-
- 3.1 scp:基于SSH的安全复制
- 3.2 rsync:高效增量同步
- 四、项目实战:Rsync + Sersync 实时同步
-
- 4.1 架构说明
- 4.2 部署 Rsync 服务端(backup)
- 4.3 测试 Rsync 客户端(webapp)
- 4.4 部署 Sersync(webapp)
- 4.5 运行 Sersync
- 4.6 配置 systemd 管理
- 4.7 验证实时同步
- 4.8 sersync 参数说明
- 写在最后
Linux网络管理、文件归档与远程同步实战
网络配置、tar备份、scp/rsync传输、sersync实时同步,一篇文章搞定文件流转全链路
前言
今天的课程涵盖了运维工作中文件流转的完整链路:从网络配置让机器互通,到tar打包归档,再到scp/rsync跨机传输,最后用sersync实现实时自动同步。
学完今天的内容,你将能独立完成:配置静态IP、打包备份重要数据、在服务器间高效传输文件、搭建一套文件实时同步系统。
一、网络管理:nmcli 命令详解
1.1 概念澄清
- DEVICE(设备):物理网卡(如 ens192)
- CONNECTION(连接):网卡的配置方案
一个设备可以有多个连接配置,但同一时刻只能激活一个。
1.2 网络启停
# 停用/启用所有网络(不影响NetworkManager服务)
[root@server ~]$ nmcli networking off
[root@server ~]$ nmcli networking on
1.3 设备管理
# 查看设备状态
[root@server ~]$ nmcli device
DEVICE TYPE STATE CONNECTION
ens160 ethernet 已连接 ens160
ens192 ethernet 已连接 ens192
# 断开/连接设备
[root@server ~]$ nmcli device disconnect ens192
[root@server ~]$ nmcli device connect ens192
# 查看设备详细信息
[root@server ~]$ nmcli device show ens192 | grep IP4
IP4.ADDRESS[1]: 10.1.8.10/24
IP4.GATEWAY: 10.1.8.2
IP4.DNS[1]: 223.5.5.5
1.4 连接管理
查看和删除连接:
# 查看所有连接
[root@server ~]$ nmcli connection
NAME UUID TYPE DEVICE
ens160 5f61d96b... ethernet ens160
ens192 0f5eac2c... ethernet ens192
# 删除连接
[root@server ~]$ nmcli connection delete ens192
动态获取IP(DHCP):
# 添加DHCP连接
[root@server ~]$ nmcli connection add type ethernet ifname ens192 con-name ens192-dynamic
# 确认IP获取方式
[root@server ~]$ nmcli connection show ens192-dynamic | grep ipv4.method
ipv4.method: auto
# 激活
[root@server ~]$ nmcli connection up ens192-dynamic
静态IP配置:
# 一行命令添加静态连接(含IP/掩码)
[root@server ~]$ nmcli connection add type ethernet ifname ens192 con-name ens192-static ipv4.method manual ipv4.addresses 10.1.8.10/24
# 修改网关和DNS
[root@server ~]$ nmcli connection modify ens192-static ipv4.gateway 10.1.8.2 ipv4.dns 223.5.5.5
# 添加静态路由
[root@server ~]$ nmcli connection modify ens192-static ipv4.routes "192.168.50.0/24 10.1.8.2"
# 激活
[root@server ~]$ nmcli connection up ens192-static
停用连接:
[root@server ~]$ nmcli connection down ens192-static
💡 同一设备多个连接可以共存,激活一个时其他自动停用。
1.5 网络配置文件
配置文件位置:/etc/sysconfig/network-scripts/ifcfg-<连接名>
# 动态配置示例
[root@server ~]$ cat /etc/sysconfig/network-scripts/ifcfg-ens192-dynamic
BOOTPROTO=dhcp
ONBOOT=yes
# 静态配置示例
[root@server ~]$ cat /etc/sysconfig/network-scripts/ifcfg-ens192-static
BOOTPROTO=none
IPADDR=10.1.8.10
PREFIX=24
GATEWAY=10.1.8.2
DNS1=223.5.5.5
ONBOOT=yes
# 手动修改后重新加载
[root@server ~]$ nmcli connection reload
[root@server ~]$ nmcli connection up ens192-static
1.6 主机名与名称解析
主机名配置:
# 永久修改主机名
[root@centos7 ~]$ hostnamectl set-hostname centos7.shep.cloud
名称解析顺序:/etc/hosts → DNS服务器
# hosts文件配置
[root@centos7 ~]$ vim /etc/hosts
10.1.8.10 centos7.shep.cloud centos7
# DNS配置(通过nmcli)
[root@centos7 ~]$ nmcli connection modify ens160 ipv4.dns 223.5.5.5
[root@centos7 ~]$ nmcli connection up ens160
[root@centos7 ~]$ cat /etc/resolv.conf
nameserver 223.5.5.5
二、文件归档和备份:tar 命令
2.1 tar 命令语法
tar [选项] [归档文件] [源文件...]
核心选项:
| -c | 创建归档 |
| -x | 提取归档 |
| -t | 查看内容 |
| -r | 追加文件 |
| –delete | 删除文件 |
| -f | 指定归档文件名 |
| -v | 显示过程 |
2.2 创建和查看
# 创建tar包(root用户避免权限问题)
[root@centos7 ~]$ tar -cf etc-$(date +%Y%m%d).tar /etc
# 查看内容
[root@centos7 ~]$ tar -tf etc-20240726.tar | grep etc/host
etc/host.conf
etc/hosts
etc/hostname
# 追加文件
[root@centos7 ~]$ tar -r -f etc-20240726.tar /usr/share/doc/at-3.1.13/timespec
# 删除文件
[root@centos7 ~]$ tar –delete -f etc-20240726.tar usr/share/doc/at-3.1.13/timespec
2.3 提取文件
# 提取所有文件
[root@centos7 ~]$ tar -xf etc-20240726.tar
# 提取部分文件
[root@centos7 ~]$ tar -xf etc-20240726.tar $(tar -tf etc-20240726.tar | grep etc/host)
2.4 压缩归档
| gzip | -z | .tar.gz | 最快 | 一般 |
| bzip2 | -j | .tar.bz2 | 中等 | 较好 |
| xz | -J | .tar.xz | 最慢 | 最好 |
# gzip压缩
[root@centos7 ~]$ time tar -czf etc.tar.gz /etc
real 0m0.815s
[root@centos7 ~]$ ls -lh etc.tar.gz
-rw-r–r–. 1 root root 7.0M
# bzip2压缩
[root@centos7 ~]$ time tar -cjf etc.tar.bz2 /etc
real 0m1.740s
[root@centos7 ~]$ ls -lh etc.tar.bz2
-rw-r–r–. 1 root root 5.2M
# xz压缩(压缩比最高,速度最慢)
[root@centos7 ~]$ time tar -cJf etc.tar.xz /etc
real 0m10.721s
[root@centos7 ~]$ ls -lh etc.tar.xz
-rw-r–r–. 1 root root 4.2M
# 查看压缩包内容(无需指定压缩选项)
[root@centos7 ~]$ tar -tf etc.tar.gz
三、系统间复制文件
3.1 scp:基于SSH的安全复制
# 下载文件
[root@client ~]$ scp root@server:/root/etc-20240726.tar .
# 下载多个文件
[root@client ~]$ scp root@server:/root/{etc-20240726.tar,etc.tar} .
# 下载目录(-r递归)
[root@client ~]$ scp -r root@server:/etc/selinux/ .
# 上传文件
[root@client ~]$ scp etc.tar root@server:
[root@client ~]$ scp etc.tar etc-20240726.tar root@server:
⚠️ scp缺点:不管文件是否存在都重新传输(全量备份),缺少比对功能。
3.2 rsync:高效增量同步
Rsync通过"quick check"算法,只同步大小或修改时间变化的文件,实现快速增量同步。
# 安装
[root@centos7 ~]$ yum install -y rsync
常用选项:
| -a | 归档模式(-rlptgoD) |
| -v | 显示详细过程 |
| -n | 空运行(预览) |
| –delete | 同步删除目标端多余文件 |
| -r | 递归目录 |
| -p | 保留权限 |
| -t | 保留时间戳 |
shell模式(基于sshd):
# 首次同步
[root@client ~]$ rsync -av Pictures root@server:
sending incremental file list
Pictures/
Pictures/snap1.jpg
...
# 再次同步(无变化时无传输)
[root@client ~]$ rsync -av Pictures root@server:
sending incremental file list
# 修改文件后再次同步(只传变化的文件)
[root@client ~]$ touch Pictures/snap1.jpg snap2.jpg
[root@client ~]$ rsync -av Pictures root@server:
Pictures/snap1.jpg
Pictures/snap2.jpg
# 删除源端文件,同步删除目标端
[root@client ~]$ rm Pictures/snap5.jpg
[root@client ~]$ rsync -av Pictures root@server: –delete
deleting Pictures/snap5.jpg
同步注意事项:
- 源路径带斜杠:只复制目录内文件
- 源路径不带斜杠:复制目录本身及内容
rsync -av /data/ user@host:/backup # 只复制data内部文件
rsync -av /data user@host:/backup # 复制data目录本身
四、项目实战:Rsync + Sersync 实时同步
4.1 架构说明

- Sersync:监控源端目录变化,调用rsync推送,部署在源端
- Rsync:提供备份服务,部署在目标端
4.2 部署 Rsync 服务端(backup)
# 1. 安装
[root@backup ~]$ yum install -y rsync
# 2. 准备备份目录
[root@backup ~]$ mkdir -m 777 /backup
# 3. 配置rsync
[root@backup ~]$ vim /etc/rsyncd.conf
uid=root
gid=root
[backup]
comment = backup
path = /backup
read only = no
auth users = rsync
secrets file = /etc/rsyncd.secrets
# 4. 创建密码文件
[root@backup ~]$ echo 'rsync:redhat' > /etc/rsyncd.secrets
[root@backup ~]$ chmod 400 /etc/rsyncd.secrets
# 5. 启动服务
[root@backup ~]$ systemctl enable rsyncd –now
# 6. 防火墙放行
[root@backup ~]$ firewall-cmd –add-service=rsyncd –permanent
[root@backup ~]$ firewall-cmd –reload
# 7. 关闭SELinux
[root@backup ~]$ setenforce 0
4.3 测试 Rsync 客户端(webapp)
# 准备密码文件
[root@webapp ~]$ echo 'redhat' > rsyncd.secrets
[root@webapp ~]$ chmod 400 rsyncd.secrets
# 测试同步
[root@webapp ~]$ rsync -av –password-file=./rsyncd.secrets /etc/hostname rsync@backup::backup
sending incremental file list
hostname
sent 107 bytes received 35 bytes 284.00 bytes/sec
# 验证(backup端)
[root@backup ~]$ ls /backup/
hostname
4.4 部署 Sersync(webapp)
下载与安装:
[root@webapp ~]$ wget http://192.168.50.200/class/course-materials/softwares/stage01/sersync2.5.4_64bit_binary_stable_final.tar.gz
[root@webapp ~]$ tar -xf sersync2.5.4_64bit_binary_stable_final.tar.gz
[root@webapp ~]$ cp GNU-Linux-x86/sersync2 /usr/local/bin/
配置文件:
[root@webapp ~]$ vim confxml.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
<host hostip="localhost" port="8008"></host>
<debug start="false"/>
<fileSystem xfs="true"/>
<!– 过滤器:排除不需要同步的内容 –>
<filter start="true">
<exclude expression="^cache/*"></exclude>
</filter>
<!– 监控事件类型 –>
<inotify>
<delete start="true"/>
<createFolder start="true"/>
<createFile start="false"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="true"/>
<modify start="true"/>
</inotify>
<sersync>
<!– 监控的本地目录 –>
<localpath watch="/app_data">
<!– 目标服务器IP和模块名 –>
<remote ip="10.1.8.11" name="backup"/>
</localpath>
<rsync>
<commonParams params="-azP"/>
<auth start="true" users="rsync" passwordfile="/root/rsyncd.secrets"/>
<userDefinedPort start="false" port="873"/>
<timeout start="false" time="100"/>
<ssh start="false"/>
</rsync>
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/>
<crontab start="false" schedule="600"/>
<plugin start="false" name="command"/>
</sersync>
</head>
4.5 运行 Sersync
# 准备监控目录
[root@webapp ~]$ mkdir /app_data
# 复制配置文件到/etc
[root@webapp ~]$ cp confxml.xml /etc/sersyncd.conf
# 启动sersync
[root@webapp ~]$ /usr/local/bin/sersync2 -o /etc/sersyncd.conf -d
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
...
watch path is: /app_data
4.6 配置 systemd 管理
[root@webapp ~]$ vim /etc/systemd/system/sersyncd.service
[Unit]
Description=SerSync server daemon
[Service]
Type=forking
ExecStart=/usr/local/bin/sersync2 -o /etc/sersyncd.conf -d
[Install]
WantedBy=multi-user.target
[root@webapp ~]$ systemctl daemon-reload
[root@webapp ~]$ systemctl enable sersyncd –now
4.7 验证实时同步
# backup端监控目录
[root@backup ~]$ watch -n 1 tree /backup
# webapp端操作
[root@webapp ~]$ echo hello > /app_data/welcome.txt
[root@webapp ~]$ mkdir /app_data/dbdata
# backup端1-2秒后自动出现同步文件
4.8 sersync 参数说明
| -d | 守护进程模式 |
| -r | 启动前先全量推送一次 |
| -n | 指定守护线程数(默认10) |
| -o | 指定配置文件路径 |
sersync优点:
- ✅ 过滤临时文件和重复事件,效率更高
- ✅ 配置简单,静态编译直接使用
- ✅ 多线程同步,适合大文件
- ✅ 失败队列重传机制
- ✅ 自带定时全量同步功能
写在最后
今天的内容围绕文件如何流动展开:
| 网络配置 | nmcli | 让服务器之间互通 |
| 文件归档 | tar | 本地备份、压缩存储 |
| 跨机传输 | scp / rsync | 手动/定时传输文件 |
| 实时同步 | rsync + sersync | 自动实时备份 |
其中 rsync + sersync 是生产环境常用的实时备份方案,适用于网站数据同步、日志收集、配置分发等场景。掌握了这套组合,你就具备了搭建高可用文件同步系统的基础能力。
📌 核心命令速查
# 网络
nmcli device show ens192 # 查看网卡详情
nmcli connection add ... # 添加连接
nmcli connection up/down 连接名 # 激活/停用
# 归档
tar -czf archive.tar.gz /path # 压缩归档
tar -xf archive.tar.gz # 解压
tar -tf archive.tar.gz # 查看内容
# 传输
scp -r user@host:/path . # 下载
rsync -av –delete /src user@host:/dest # 增量同步
# 实时同步
sersync2 -o /etc/sersyncd.conf -d # 启动监控
点点关注,持续更新,欢迎技术讨论。
网硕互联帮助中心








评论前必须登录!
注册