云计算百科
云计算领域专业知识百科平台

Linux网络管理、文件归档与远程同步实战

文章目录

  • 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 # 启动监控


点点关注,持续更新,欢迎技术讨论。

赞(0)
未经允许不得转载:网硕互联帮助中心 » Linux网络管理、文件归档与远程同步实战
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!