rsync是一款Linux上的文件同步工具掩驱。
安裝
一般的Linux系統(tǒng)都自帶了這個(gè)工具潘靖,如果沒(méi)有的話,可以用下面的命令安裝
$ wget https://download.samba.org/pub/rsync/rsync-3.1.1.tar.gz
$ tar -xvzf rsync-3.1.1.tar.gz && cd rsync-3.1.1
$ ./configure && make && sudo make install
服務(wù)器端
假設(shè)我們有一個(gè)目錄/home/clinyong/backup/mysql
需要同步蚤蔓,創(chuàng)建配置文件
$ sudo touch /etc/rsyncd.conf
$ sudo vi /etc/rsyncd.conf
加入下面的內(nèi)容
# SYNC守護(hù)進(jìn)程的用戶
uid = root
# 運(yùn)行RSYNC守護(hù)進(jìn)程的組
gid = root
# 不使用chroot
use chroot = no
# 最大連接數(shù)是4
max connections = 4
# pid文件存放位置
pid file = /var/run/rsyncd.pid
# 鎖文件存放位置
lock file = /var/run/rsync.lock
# 日志文件存放位置
log file = /var/log/rsyncd.log
[mysql]
# 要同步的目錄
path = /home/clinyong/backup/mysql
# 忽略無(wú)關(guān)的IO錯(cuò)誤
ignore errors
# 只讀卦溢,不能上傳
read only = true
# 禁止查看文件列表
list = false
# 允許訪問(wèn)服務(wù)的ip
# hosts allow = 192.168.1.200
# 禁止訪問(wèn)服務(wù)的ip
# hosts deny = 0.0.0.0/32
# 認(rèn)證的用戶名,系統(tǒng)必須存在的用戶秀又,但是密碼需要在secrets file 配置单寂,不是系統(tǒng)的密碼。
auth users = clinyong
# 認(rèn)證用戶密碼文件吐辙,配置auth users的密碼
secrets file = /etc/backserver.pas
上面配置文件中的mysql
可以自定義宣决,客戶端同步的時(shí)候要用到。上面的認(rèn)證用戶昏苏,必須是系統(tǒng)存在的用戶尊沸。
接下來(lái)創(chuàng)建密碼文件/etc/backserver.pas
$ sudo touch /etc/backserver.pas
$ sudo chown root:root /etc/backserver.pas
$ sudo chmod 600 /etc/backserver.pas
然后在里面加入
clinyong:clinyong
每個(gè)用戶一行,冒號(hào)前面是用戶名贤惯,后面是密碼洼专,然后啟動(dòng)服務(wù)
$ sudo rsync --daemon --config=/etc/rsyncd.conf
這樣服務(wù)端就算搭建好了,可以把命令加入到開(kāi)機(jī)啟動(dòng)
$ echo 'rsync --daemon --config=/etc/rsyncd.conf' >> /etc/rc.d/rc.local
客戶端
假設(shè)我們要把剛剛服務(wù)器端的/home/clinyong/backup/mysql
同步下來(lái)孵构。
先創(chuàng)建密碼文件屁商,用于同步時(shí)的驗(yàn)證
$ touch ~/rsyncd.secrets
$ chmod 600 ~/rsyncd.secrets
這個(gè)文件只要放密碼就可以了,在這個(gè)例子中颈墅,則是放入
clinyong
然后運(yùn)行
$ rsync -avz --delete --password-file=/xxx/rsyncd.secrets clinyong@your_ip::mysql destination
把your_ip
換成自己服務(wù)器的ip地址蜡镶,mysql
就是在服務(wù)器端的配置文件填寫的字段,destination
換成本地路徑恤筛,這樣子就能把文件同步下來(lái)了官还。
把命令加入到crontab,讓其每天同步一次毒坛,運(yùn)行crontab -e
妻枕,在最后一行加入
00 00 * * * rsync -avz --delete --password-file=/xxx/rsyncd.secrets clinyong@your_ip::mysql destination