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 [email protected]:/var/ssh/* /ssh/

在這裏插入圖片描述
2.上傳

#發起端
cd /ssh/
touch s.txt
rsync -avz /ssh/* [email protected]:/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 [email protected]::share /rsync 
#如果失敗,關閉服務器的防火牆和selinux
#iptables -F
#setenforce 0

在這裏插入圖片描述
從同步源下載成功
2.上傳

#發起端
cd /rsync
touch r.txt
rsync -avz r.txt [email protected]::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通過掛載實現文件功能共享。總之,收穫很大,再接再勵!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章