[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