当前位置: 首页 > news >正文

[Linux] Linux tar文档管理 系统间复制文档

目录

Linux tar文档管理

tar命令

tar包管理

打包

查看包中文件

提取

Linux系统间复制文档

Linux之间传输

scp命令

rsync命令

实战:Rsync+Sersync实现文件实时同步

部署Rsync服务

安装软件包

配置rsync

客户端配置和测试

部署Sersync服务

安装软件包

配置Sersync

运行Sersync

测试

配置systemd管理Sersync


Linux tar文档管理

tar命令

创建:

  • tar -cf etc.tar /etc

  • tar -czf etc.tar.gz /etc (-z指定压缩格式为gzip)

查看:

  • tar -tf etc.tar

提取:

  • tar -xf etc.tar -C /tmp/

  • (-C : 指定提取目录)

语法:

tar包管理

打包

#创建tar包,创建时需注意用户要有权限访问目标文件(root用户可以打包所有文件)
[11:27:16 root@server-znf ~]# tar -cf etc.tar /etc

打包时会将文件的第一个字符/剔除掉。解压时默认解压到当前位置。

#用gzip压缩
[11:51:03 root@server-znf ~]# tar -zcf etc.tar.gz /etc

再次打包时,如果存在相同的tar包会直接覆盖掉。

#可以通过添加日期确保每天打包的文件名不一致
[11:57:29 root@server-znf ~]# tar -cf etc-$(date +%y%m%d).tar /etc

查看包中文件

tar -t -f etc.tar
#配合grep过滤
tar -t -f etc.tar | grep etc/host

提取

#提取所有文件
[18:54:11 root@client-znf ~]# tar -xf etc.tar#查看其中一个目录
tree -L 1 etc/yum#提取部分文件
tar -t -f etc.tar | grep etc/host

Linux系统间复制文档

Linux之间传输

scp命令

安全复制,基于ssh协议,也就是说Linux服务器要开启ssh服务

#将client中的vmlinuz-4.18.0-553.el8_10.x86_64发送给server
scp /boot/vmlinuz-4.18.0-553.el8_10.x86_64 root@server:
#打包
tar -czf etc.tar.gz /etc
#将etc.tar.gz发送到server中的tmp目录下
scp etc.tar.gz  root@server:/tmp
#远程看server的tmp目录
ssh root@server ls /tmp
#-r:复制目录  将/etc/selinux/目录复制到server的家目录下
scp -r /etc/selinux/ root@server:
#将多个目录复制到server的家目录下
scp -r /etc/hosts /usr/share/doc/cronie/ server:

rsync命令

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

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

安装rsync软件包:

mkdir test
touch test/file-{01..10}rsync -av test/ root@server:
rsync -av test/ root@server:touch test/file-06
rsync -av test/ root@server:

实战:Rsync+Sersync实现文件实时同步

Rsync:负责数据同步,部署在server端

Sersync:负责监控数据目录变化,并调用rsync进行同步,部署在client端

部署Rsync服务

安装软件包
dnf install -y rsync-daemon
配置rsync

本次实验使用验证用户同步

#准备同步目录
[15:14:33 root@server-znf ~]# mkdir -m 777 /backup
#配置文件
[15:14:44 root@server-znf ~]# vim /etc/rsyncd.conf

添加以下配置:

[backup]
comment = backup
path = /backup
read only = no
auth users = rsync
secrets file = /etc/rsyncd.secrets
#创建用户凭据文件
[15:16:44 root@server-znf ~]# echo 'rsync:redhat' > /etc/rsyncd.secrets
[15:17:30 root@server-znf ~]# chmod 400 /etc/rsyncd.secrets
#启用并启动rsyncd服务
[15:18:02 root@server-znf ~]# systemctl enable rsyncd --now

#配置防火墙
[15:19:07 root@server-znf ~]# firewall-cmd --add-service=rsyncd
[15:19:34 root@server-znf ~]# firewall-cmd --add-service=rsyncd --permanent 
客户端配置和测试
#准备密码文件
[15:23:26 root@client-znf ~]# echo redhat > rsyncd.secrets
[15:23:52 root@client-znf ~]# chmod 400 rsyncd.secrets
#传输测试
[15:24:05 root@client-znf ~]# rsync -v --password-file=./rsyncd.secrets /etc/hostname rsync@server::backup

验证结果

[15:21:23 root@server-znf ~]# ls /backup/

部署Sersync服务

安装软件包
#解压文件
[15:30:13 root@client-znf ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz 
[15:31:54 root@client-znf ~]# ls GNU-Linux-x86/

配置Sersync

配置文件示例

<?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="false"/><modify start="false"/></inotify><sersync><localpath watch="/app_data"><remote ip="10.1.8.10" 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"><!--600mins--><crontabfilter start="false"><exclude expression="*.php"></exclude><exclude expression="info/*"></exclude></crontabfilter></crontab><plugin start="false" name="command"/></sersync><plugin name="command"><param prefix="/bin/sh" suffix="" ignoreError="true"/><filter start="false"><include expression="(.*)\.php"/><include expression="(.*)\.sh"/></filter></plugin>
</head>

将文件放至 GNU-Linux-x86/ 下覆盖

运行Sersync

#准备同步目录
[15:38:22 root@client-znf ~]# mkdir /app_data
[15:40:35 root@client-znf ~]# cp GNU-Linux-x86/sersync2 /usr/bin/
[15:41:32 root@client-znf ~]# sersync2 -o /root/GNU-Linux-x86/confxml.xml -d

测试

#server端监控目录 /backup
#用tree查看,每秒刷新一次
watch -n 1 tree /backup

客户端创建文件或目录

client:

[15:46:13 root@client-znf ~]# mkdir /app_data/testtxt

server:

客户端删除文件

[15:51:11 root@client-znf ~]# rm -fr /app_data/*

配置systemd管理Sersync

[15:59:11 root@client-znf ~]# cp /root/GNU-Linux-x86/confxml.xml /etc/sersyncd.conf
[15:59:26 root@client-znf ~]# vim /etc/systemd/system/sersyncd.service

文件内写入:

[Unit]
Description=SerSync server daemon[Service]
Type=forking
ExecStart=/usr/bin/sersync2 -o /etc/sersyncd.conf -d[Install]
WantedBy=multi-user.target
[16:07:35 root@client-znf ~]# systemctl daemon-reload
[16:07:43 root@client-znf ~]# systemctl enable sersyncd.service

http://www.dtcms.com/a/333914.html

相关文章:

  • KingbaseES高可用架构深度解析——从读写分离到异地灾备的全方位守护
  • 零改造迁移实录:2000+存储过程从SQL Server滑入KingbaseES V9R4C12的72小时
  • 线程池与异步编程——语法归纳
  • STM32F407 TIM pwm 调试笔记, LL库
  • 安卓11 12系统修改定制化_____如何去除安卓11 12的系统签名验证
  • 【大模型应用开发 1.嵌入模型与向量数据库 Chroma】
  • JavaEE 初阶第十九期:网络编程“通关记”(一)
  • C# 应用特性的更多内容:多维度解析与深度拓展
  • AI安全防御框架:纵深防御与零信任策略浅谈
  • 【C 学习】06-算法程序设计举例
  • pnpm(Performant npm)的安装
  • 欧姆龙CP系列以太网通讯实现上位机与触摸屏监控
  • ClickHouse的学习与了解
  • 基于隐私保护的旅游信息共享平台(LW+源码+讲解+部署)
  • 数据结构:迭代方法(Iteration)实现树的遍历
  • 新手向:Python异常处理(try-except-finally)详解
  • k8sday08深入控制器(3/3)
  • Arduino通过MQTT发送消息到树莓派
  • 【大模型核心技术】Dify 入门教程
  • GitHub 热榜项目 - 日榜(2025-08-16)
  • 心路历程-三个了解敲开linux的大门
  • 基于Uni-app+vue3实现微信小程序地图固定中心点范围内拖拽选择位置功能(分步骤详解)
  • 基于uni-app+vue3实现的微信小程序地图范围限制与单点标记功能实现指南
  • SpringBoot 整合 Langchain4j:系统提示词与用户提示词实战详解
  • uniapp:微信小程序使用Canvas 和Canvas 2D绘制图形
  • 【Java笔记】synchronized
  • GitHub宕机时的应急协作方案
  • 【Java学习】锁、线程死锁、线程安全2
  • Go语言实战案例:连接MySQL数据库
  • webrtc弱网-VideoSendStreamImpl类源码分析与算法原理