前言:
配置unison:实现双向备份
RSYNC服务器
关于RSYNC
一款快速增量备份工具
Remote Sync,远程同步
支持本地复制,或者与其他SSH、rsync主机同步
官方网站: http://rsync. samba. org/
RSYNC特点
能更新整个目录和树和文件系统;
有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;
对于安装来说,无任何特殊权限要求;
对于多个文件来说,内部流水线减少文件等待的延时;能用rsh、ssh或直接端口做为传输入端口;
支持匿名rsync同步文件,是理想的镜像工具
同步源与发起端
rsync同步源:
指备份操作的远程服务器,也称为备份源
主要包括两种: rsync源、SSH源
rsync命令格式
rsync命令的用法
一:通过搭建SSH,实现单向同步
1:
查看两台机器的IP
服务器:192.168.142.131
发起端:192.168.142.133
2:
在两台机器上新建目录
服务器:
发起端:
3:
在一台机器上新建文件和用户,并修改文件权限
服务器:
4:测试上传
(1)
服务器端:
发起端:进行测试
ssh.txt成功上传到客户机(发起端),测试成功。
5:测试下载
客户端:
服务器端:
客户机端新建的s.txt成功下载到服务器。
二:通过搭建rsync,实现单向同步
1:服务器端写一个主配置文件
2:写用户名和密码的对应关系
3:密码文件服务改为600,否则服务起不来
4:开启服务:
5:建立以rsync方式搭建的同步源的 存放数据的目录
6:进到里面
7:来到客户端,进行同步测试
(1)先建一个本地目录
(2)用命令进行同步:
注意:服务器和客户机关闭防火墙和SELINUX
(3)查看结果:
服务器端建立的rsync.txt,成功同步下载到客户端。
(4)测试客户端的新建文件能不能同步到服务器
客户端:
发现报错,原因是服务器端vim /etc/rsyncd.conf中,rsync没有写权限。
若想能成功同步需要在服务器端vim /etc/rsyncd.conf中,修改如下:
然后
chmod 777 /var/rsync
再次来到客户机上传,发现上传成功:
三:利用rsync搭建自动同步服务器!
1.:进行无密码验证环境准备,设置无密码验证使两台能无密码验证。
(1)
#在服务器端
ssh-keygen -t rsa #设置无密钥认证
ssh-copy-id 192.168.142.133 #指定另外一台机器的ip
#在客户端:
ssh-keygen -t rsa
ssh-copy-id 192.168.142.131
(2)进行测试:
# 服务器端
ssh 192.168.142.133 date
无密码验证成功:
# 客户端
ssh 192.168.142.131 date
无密码验证成功:
2:两台机器都装一下gcc
#服务器
yum -y install 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 server1.txt
#客户端
mkdir /server2
cd /server2
touch server2.txt
#服务端
unison -batch /server1 ssh://192.168.142.133//server2
服务端:
再次ls后,/server1下应多了server2.txt;/server2下应多了server1.txt。
8:写脚本调用执行文件自动同步
服务器端:
cd ~
vim 1.sh
#!/bin/bash
ip2="192.168.142.133"
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
bash 1.sh
到客户机执行以下操作:
ssh 192.168.142.131
cd /server1/
touch 1.txt
然后来到服务器查看如下
发现客户端刚写的1.txt在服务器也有了,说明文件自动同步成功。
可以
vim /var/log/inotify.log #查看监听日志里记录的变化
由于我多练习了几次,所以有4条变化。
四:利用nfs搭建简单的文件同步服务器
nfs:网络文件系统,红帽7版之前透明传输,安全性较差,一般用在局域网里,要想通过公网验证一般用ftp来做。
服务端:
1:安装两个工具
yum -y install rpcbind #安装nfs用到的工具,远程终端调用,用来响应rpcbind,默认开启
yum -y install nfs-utils #安装nfs用到的工具包
2:写文件共享的列表
vim /etc/exports
#读写权限
/public 192.168.142.0/24(rw,sync)
#只读权限
/share 192.168.142.133(ro,sync)
3:创建共享目录和文件
cd /
mkdir public share
chmod 777 public/
chmod 777 share/
cd public/
touch public.txt
cd /share/
touch share.txt
4:重启服务
service rpcbind restart
service nfs restart
5:查看本机共享列表
showmount -e 127.0.0.1
客户端:
1:测试
showmount -e 192.168.142..131
显示两个服务端共享的文件夹列表,说明客户端能收到服务端共享的资源。
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.142.131:/share /mnt/
#写入测试
cd /mnt/
touch wmm
无法写入
两条记录,一条读写访问,一条只读访问,验证成功。
4.设置自动挂载
vim /etc/fstab
cd ..
umount /mnt/
mount -a
mount | tail -1
实验完毕。
感悟:
本次Linux实验我明白了单向文件同步,RSYNC服务的SSH源和rsync源进行下载和上传。也了解到自动文件同步的实现和脚本的编写。同时也了解nfs通过挂载实现文件功能共享。但是过程中还是出了很多问题,希望下次能减少出错的操作,但是每次出错要分析清楚出错的原因,增强解决问题的能力。
拓展
1:目录同步
mkdir /aa
mkdir /bb
mount --bind /aa /bb
#写入fstab
vim /etc/fstab
/aa /bb ext4 defaults,bind 0 0
2:设置权限
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