Centos之文件同步

前言

本文记录了实现文件单双向同步的过程,以及一些相关知识的总结。

文件同步

在这里插入图片描述
配置unison:实现双向备份

RSYNC服务器

关于RSYNC
一款快速增量备份工具
Remote Sync,远程同步
支持本地复制,或者与其他SSH、rsync主机同步
官方网站: http://rsync. samba. org/
RSYNC特点
能更新整个目录和树和文件系统;
有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;
对于安装来说,无任何特殊权限要求;
对于多个文件来说,内部流水线减少文件等待的延时;能用rsh、ssh或直接端口做为传输入端口;
支持匿名rsync同步文件,是理想的镜像工具
同步源与发起端
rsync同步源:
指备份操作的远程服务器,也称为备份源
主要包括两种: rsync源、SSH源
在这里插入图片描述
rsync命令格式
在这里插入图片描述
rsync命令的用法
在这里插入图片描述
目录同步

mkdir /aa
mkdir /bb
mount --bind /aa /bb
#写入fstab
vim /etc/fstab
/aa      /bb    ext4   defaults,bind   0 0
1、SSH源

1.下载

#同步源
mkdir /var/ssh
cd /var/ssh
touch ssh.txt
useradd wmm1 #上传,有写权限
passwd wmm1
chown wmm1:wmm1 /var/ssh/
useradd wmm2 #下载,有读权限
passwd wmm2

在这里插入图片描述

#发起端
mkdir /ssh
rsync -avz wmm2@192.168.201.137:/var/ssh/* /ssh/

在这里插入图片描述
2.上传

#发起端
cd /ssh/
touch s.txt
rsync -avz /ssh/* wmm1@192.168.201.137:/var/ssh/

在这里插入图片描述
在这里插入图片描述

2、rsync源

1.下载
配置/etc/rsyncd.conf文件

#同步源
vim /etc/rsyncd.conf

use chroot = yes
address = 192.168.201.137
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
[share]
    coment = 描述信息
    path = /var/rsync
    read only = yes
    dont compress = *.gz *.bz2 #指定不压缩类型
    auth users = qwzf
    secrets file = /etc/rsyncd_users.db #指定密码文件

在这里插入图片描述
写入用户和密码对应关系

vim /etc/rsyncd_users.db
qwzf:123456

在这里插入图片描述

chmod 600 /etc/rsyncd_users.db#更改密码文件权限为600
rsync --daemon #启动
netstat -anpt #查看端口

在这里插入图片描述
启动成功

#同步源
mkdir /var/rsync
cd /var/rsync/
touch rsync.txt

服务端创建目录和文件
在这里插入图片描述

#发起端
mkdir /rsync
rsync -avz qwzf@192.168.201.137::share /rsync 
#如果失败,关闭服务器的防火墙和selinux
#iptables -F
#setenforce 0

在这里插入图片描述
从同步源下载成功
2.上传

#发起端
cd /rsync
touch r.txt
rsync -avz r.txt qwzf@192.168.201.137::share

在这里插入图片描述
发现报错,原因是服务器端没有写入权限,解决方法:
修改服务端文件及文件权限

vim /etc/rsyncd.conf
read only = false #将原来的yes改为false

chmod 777 /var/rsync

在这里插入图片描述
再次上传,发现上传成功
在这里插入图片描述
扩展:设置权限

mkdir /a
useradd manager
setfacl -m u:manager:rwx /a
useradd qwzf
setfacl -m u:qwzf:r-x /a
#删除权限
setfacl -x u:qwzf /a
setfacl -b /a
#设置默认权限
setfacl -m default:u:manager:rwx /a

自动同步

服务端ip:192.168.201.137
客户端ip:192.168.201.139

1.设置无密码验证

#服务端
ssh-keygen -t rsa
ssh-copy-id 192.168.201.139
#客户端
ssh-keygen -t rsa
ssh-copy-id 192.168.201.137

服务端和客户端进行测试

#服务端:
ssh 192.168.201.139 date
#客户端:
ssh 192.168.201.137 date

在这里插入图片描述
在这里插入图片描述
发现不需要密码,设置无密码验证成功
2.两台虚拟机安装gcc

yum -y install gcc*

3.换光盘
eject弹出光盘,然后选择下面这个镜像连接
在这里插入图片描述
4.安装ocaml

#服务端和客户端都做以下操作
cd /media/20130806_063316/
cp * /usr/src
cd /usr/src
tar -zxf ocaml-3.10.1.tar.gz
cd ocaml-3.10.1
./configure
make world opt
make install

在这里插入图片描述
5.安装unison

#服务端和客户端都做以下操作
cd /usr/src
tar -zxf unison-2.13.16.tar.gz
cd unison-2.13.16
make UISTYPE=text THREADS=ture STATIC=true #出现make[1]: [tags] Error 127 (ignored)错误忽视即可
cp unison /usr/local/bin/

6.安装inotify-tools

#服务端和客户端都做以下操作
cd /usr/src
tar -zxf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
make
make install

7.测试

#服务端
mkdir /server1
cd /server1
touch s1.txt
#客户端
mkdir /server2
cd /server2
touch s2.txt
#服务端
unison -batch /server1 ssh://192.168.201.139//server2

在这里插入图片描述
服务端
在这里插入图片描述
客户端
在这里插入图片描述
8.写脚本调用
服务端1.sh

#!/bin/bash
ip2="192.168.201.139"
src2="/server1"
dst2="/server2"
/usr/local/bin/inotifywait -mrq -e create,delete $src2 | while read line; #监控src2目录创建和删除
do
    /usr/local/bin/unison -batch $src2 ssh://$ip2/$dst2
echo -n "$line" >> /var/log/inotify.log #保存日志
echo `date | cut -d " " -f1-4` >>/var/log/inotify.log #截取第1到第4部分存到日志
done

在这里插入图片描述
运行shell脚本,并在客户端远程连接服务端简单测试一下
在这里插入图片描述
在这里插入图片描述
发现成功实现文件自动同步。然后在客户端也写个除了ip和目录不同,其他几乎一样的脚本,如:
2.sh

#!/bin/bash
ip1="192.168.201.137"
src1="/server2"
dst1="/server1"
/usr/local/bin/inotifywait -mrq -e create,delete $src1 | while read line; #监控src1目录创建和删除
do
    /usr/local/bin/unison -batch $src1 ssh://$ip1/$dst1
echo -n "$line" >> /var/log/inotify.log #保存日志
echo `date | cut -d " " -f1-4` >>/var/log/inotify.log #截取第1到第4部分存到日志
done

然后两边同时运行脚本,再进行测试。

#服务端
bash 1.sh
#客户端
bash 2.sh

在服务端创建qwzf1.txt,在客户端查看,发现成功自动同步;
在客户端创建qwzf2.txt,在服务端查看,发现也成功自动同步。
在这里插入图片描述
在这里插入图片描述

nfs

红帽7版之前明文传输,一般用于局域网。

服务端ip:192.168.201.137
客户端ip:192.168.201.139

服务端

yum -y install rpcbind #远程终端调用,默认开启
yum -y install nfs-utils #工具包

1.写文件共享的列表

vim /etc/exports
#读写权限
/public 192.168.201.0/24(rw,sync)
#只读权限
/share 192.168.201.139(ro,sync)

在这里插入图片描述
2.创建共享目录和文件

cd /
mkdir public share
chmod 777 public/
chmod 777 share/
cd public/
touch public.txt
cd /share/
touch share.txt

在这里插入图片描述
3.重启服务

service rpcbind restart
service nfs restart

4.查询本机共享的列表

showmount -e

在这里插入图片描述
客户端
1.测试

showmount -e 192.168.201.137

在这里插入图片描述
显示两个服务端共享的文件夹,说明客户端能收到服务端共享的资源
2.挂载服务端的/public目录测试

mount -t nfs 192.168.201.137:/public /mnt
#查看
mount
cd /mnt/
ls
#写入测试
touch qwzf
ls
#卸载
cd ~
umount /mnt/

在这里插入图片描述
在这里插入图片描述
3.挂载服务端的/share目录测试

mount -t nfs 192.168.201.137:/share /mnt
#写入测试
cd /mnt/
touch wmm

在这里插入图片描述
和服务端设置相同,只有只读权限。
4.设置自动挂载

vim /etc/fstab

在这里插入图片描述

cd ..
umount /mnt/
mount -a
mount | tail -1

在这里插入图片描述
好了,到此为止,所有实验进行完毕。

后记

本次Linux实验我明白了单向文件同步,RSYNC服务的SSH源和rsync源进行下载和上传。也了解到自动文件同步的实现和脚本的编写。同时也了解nfs通过挂载实现文件功能共享。总之,收获很大,再接再励!!!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值