rsync:與傳統的cp、tar備份方式相比,rsync具有安全性高、備份迅速、支持增量備份等優點,通過rsync可以解決對實時性要求不高的數據備份需求,例如定期的備份文件伺服器數據到遠端伺服器,對本地磁碟定期做數據鏡像等。
inotify:inotify 是一種強大的、細粒度的、非同步的文件系統事件監控機制,linux內核從2.6.13起,加入了Inotify支持,通過Inotify可以監控文件系統中添加、刪除,修改、移動等各種細微事件,利用這個內核介面,第三方軟體就可以監控文件系統下文件的各種變化情況,而inotify-tools就是這樣的一個第三方軟體。
rsync可以實現觸發式的文件同步,但是通過crontab守護進程方式進行觸發,同步的數據和實際數據會有差異,而inotify可以監控文件系統的各種變化,當文件有任何變動時,就觸發rsync同步,結合使用rsync+inotify工具很好的解決了同步數據的實時性問題。
基礎linux教程建議你看看《linux就該這么學》這本書:www.linuxprobe.com
② 怎麼同步linux文件如何WinSCP如何設置
方法/步驟
下載安裝完成WinSCP軟體後,進入到需要同步文件的目錄,如下圖
進入到需要同步文件的目錄後,點擊界面上方的同步按鈕,如下圖
點擊後會彈出一個窗口,窗口名為同步
第一個設置項就是本地目錄也就是本地文件存放的位置,本地目錄的下方是遠程目錄,是伺服器文件存放的位置;在方向目錄中如果是伺服器同步文件到本地,就選擇本地,如果是本地文件同步到伺服器就選擇遠程,這里不要選擇錯了,不然後期非常麻煩
接著就是模式設置,模式設置直接選擇默認的「同步文件」選項即可;在同步選項設置里設置設置按照修改時間和選上預覽修改即可
如果選擇了預覽修改,然後會比較文件,當然這樣可能要花一些比較的時間,但是如果設置出錯了預覽能夠及時的發現,不至於產生破壞性的影響。
③ 如何實現Linux多台伺服器間的文件雙向同步
Linux自帶了ntp服務 -- /etc/init.d/ntpd,這個服務不僅可以設置讓本機和某台/某些機器做時間同步,他本身還可以扮演一個time server的角色,讓其他機器和他同步時間。
配置文件就是/etc/ntp.conf。
為了測試,設置讓node2 -- 192.168.1.102和node1 -- 192.168.1.101做時間同步。第一步,node1做time server,node1本身不和其他機器時間同步,就是取本地時間。所以,先把node1機器的時間調准了:
[root@node1 ~]date -s 08/03/2011
[root@node1 ~]date -s 11:12:00
[root@node1 ~]clock -w[root@node1 ~]hwclock --systohc
後兩個命令是把設置的時間寫到硬體時間中去(也就是CMOS裡面的時間)。
第二步,然後將node1配置成一個time server,修改/etc/ntp.conf,[root@node1 ~]vi /etc/ntp.conf其他的配置不怎麼需要改,只需要關注restrict的配置:
1. 注釋掉原來的restrict default ignore這一行,這一行本身是不響應任何的ntp更新請求,其實也就是禁用了本機的ntp server的功能,所以需要注釋掉。
④ linux中rsync非同步伺服器實現文件同步與備份
Rsync
非常適合在兩台機器之間快速同步大型、復雜的目錄,例如論壇的附件目錄。再配合
ssh
,則安全性也有保證,且可以利用
ssh
public
key
和
cron
來進行自動定時同步。
說明:兩台機器分別為
localhost
和
remotehost
;用戶分別為
localuser
和
remoteuser。
環境:FreeBSD
4.9
和
FreeBSD
6.1
代碼如下
設置
ssh
public
key
認證
$ssh-keygen
-t
dsa
-b
2048
生成所需的密鑰
$scp
/home/localuser/.ssh/id_dsa.pub
remoteuser@remotehost:/home/remoteuser/.ssh/localuser_id_dsa.pub
將公鑰拷貝至
remotehost
$ssh
remoteuser@remotehost
登錄到?端
代碼如下
$cd
.ssh/
;
cat
localuser_id_dsa.pub
>>
authorized_keys
至此,設置
ssh
認證完畢。
設置
rsync
確認兩端機器都安裝
rsync
,
freeBSD
有
ports
,安裝非常方便。
寫個腳本名為
backup.sh
,內容如下:
代碼如下
#!/bin/sh
RSYNC=/usr/local/bin/rsync
SSH=/usr/bin/ssh
KEY=/home/localuser/.ssh
/id_rsa
RUSER=remoteuser
RHOST=remotehost
RPATH=/remote/dir
LPATH=/this/dir
$RSYNC
-az—delte
-e
“$SSH
-i
$KEY”
$RUSER@$RHOST:$RPATH
$LPATH
-a
選項相當於選項
-rlptgoD
。簡單來講,此選項可遞歸並將幾乎所有的東西同步過去,非常有用。注意的是,
-a
默認不會保存
hardlinks
,不過可以單獨用
-H
選項來實現。
-z
選項在傳輸中壓縮文件,這無疑加快同步速度。
-delete
選項會刪除接受方一些不應存在的文件,此文件在發送方已經被刪除,這將保持目錄完全同步。
讓
cron
每天凌晨1點來跑這個腳本
代碼如下
$crontab
-e
0
1
*
*
*
/home/localuser/bin/backup.sh
友情提示
rsync是沒有自動啟動同步功能了,如果我們要定時去備份一個網站數據我們就需要用到定時功能了,上面的例子來使用到了linux中$crontab命令來定時執行備份數據腳本了哦。
⑤ linux伺服器怎麼同步修改時間
一、搭建時間伺服器
1、在一台linux伺服器安裝ntp server
2、修改ntp.conf配置文件
vi /etc/ntp.conf
restrict default nomodify
(允許任何IP的客戶專機都可以進行時間同屬步,如果是只允許某個網段的客戶機進行時間同步可以這樣寫restrict 10.58.26.0 mask 255.255.255.0 nomodify)
3、以守護進程啟動ntpd
#/etc/rc.d/init.d/ntpd -c /etc/ntp.conf -p /tmp/ntpd.pid
#/etc/rc.d/init.d/ntpd start
二、配置時間同步客戶機
ntpdate 10.128.14.25
hwclock -w
使用cron 定時同步
vi /var/spool/cron/root(或crontab -e)
增加一行,在每天的1點10分、9點10分、17點10分與時間同步伺服器進行同步並寫入BIOS
10 1 ,9,17* * * root /usr/sbin/ntpdate 10.128.14.25; /sbin/hwclock -w
⑥ linux 下是否有實時同步文件的工具
linux下兩台服復務器文件實時同步方制案設計和實現inotify-toolsrsync同步linux實時同步inotifylinux下兩台伺服器文件實時同步方案設計和實現假設有如下需求:假設兩個伺服器:192.168.0.1 源伺服器 有目錄 /opt/test/192.168.0.2 目標伺服器 有目錄...
⑦ 怎麼同步linux文件
下載安裝完成WinSCP軟體後,進入到需要同步文件的目錄,如下圖
進入到需要同步文件的目錄專後,點擊界面上方屬的同步按鈕,如下圖
點擊後會彈出一個窗口,窗口名為同步
第一個設置項就是本地目錄也就是本地文件存放的位置,本地目錄的下方是遠程目錄,是伺服器文件存放的位置;在方向目錄中如果是伺服器同步文件到本地,就選擇本地,如果是本地文件同步到伺服器就選擇遠程,這里不要選擇錯了,不然後期非常麻煩
接著就是模式設置,模式設置直接選擇默認的「同步文件」選項即可;在同步選項設置里設置設置按照修改時間和選上預覽修改即可
如果選擇了預覽修改,然後會比較文件,當然這樣可能要花一些比較的時間,但是如果設置出錯了預覽能夠及時的發現,不至於產生破壞性的影響。
河南新華網路運營協會
⑧ 如何在Linux伺服器中實現數據實時同步及備份
科技時代,任何行業都離不開數據的分析以及統籌,如果掌握了最關鍵的數據及技術,那成功就指日可待,所以數據對於一個企業來說,就是最無形的財富,而一個企業的數據基本都有伺服器保存及管理著,如何保證數據安全,實現數據同步及備份?誠愷科技小編就同大家一起來看看在Linux伺服器中利用rsync配合inotify實現數據實時同步及備份的方法。
rsync:可以鏡像保存整個目錄樹和文件系統。可以很容易做到保持原來文件的許可權、時間、軟硬鏈接等等。第一次同步時 rsync 會復制全部內容,但在下一次只傳輸修改過的文件。
方案:起初用rsync進行數據備份是利用計劃任務,定時執行一下命令實現rsync的同步,但最近開發這邊修改比較頻繁,看來需要實時同步備份來完善備份機制!所以需要利用inotify觸發器來改善!達到一旦指定的位置有了新的變動就將其同步!
環境:
CentOS 6.4 64位
rsync-3.0.9
inotify-tools-3.14
說明:
10.10.1.6 (rsync+inotify)----------網站程序(/data0/htdocs/)
10.10.1.9 (rsync)------------------網站程序備份(/data0/htdocs/)
目的:
實現10.10.1.6的/data0/htdocs/目錄下發生任何變動都將實時同步到10.10.1.9的/data0/htdocs/上(另,這兩台都跑有keepalived+nginx,來實現出現故障自動切換的容災,詳細配置會在後面補上)
一、web伺服器10.10.1.6 (rsync+inotify)
1、准備軟體包
2、安裝Rsync
1)、1234 tar-zxvf rsync-3.0.9.tar.gz
2)、cdrsync-3.0.9
3)、./configure--prefix=/usr/local/rsync
4)、make;makeinstall
建立密碼認證文件
[root@ftp ~]# echo "111111">/etc/rsyncd/rsyncd.secrets建立密碼認證文件
*其中111111可以自己設置密碼,rsyncd.secrets名字也可以自己設置;
許可權:要將/etc/rsyncd/rsyncd.secrets設置為root擁有, 且許可權為600。
# chmod 600 /etc/rsyncd/rsyncd.secrets
3、安裝inotify
1)、1234 tar-zxvf inotify-tools-3.14.tar.gz
2)、cdinotify-tools-3.14
3)、./configure--prefix=/usr/local/inotify
4)、make;makeinstall
4、創建rsync復制腳本
此項功能主要是將ftp端的目錄/data0/htdocs/里的內容,如果修改了(無論是添加、修改、刪除文件)能夠通過inotify監控到,並通過rsync實時的同步給10.10.1.9的/data0/htdocs里,下面是通過shell腳本實現的。
[root@web ~]# vim /root/shell/rsync.sh
[root@web ~]# chmod u+x /root/shell/rsync.sh
[root@web ~]# setsid /root/shell/rsync.sh &
#後台運行腳本,關閉shell終端繼續後台運行
rsync.sh腳本加入開機啟動項
# echo "/root/shell/rsync.sh" >> /etc/rc.local
防火牆開啟rsync埠:873
添加:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -jACCEPT
重啟:
# /etc/init.d/iptables restart
二、備份伺服器10.10.1.9(rsync)
1、准備工作
創建備份目錄:
# mkdir /data0/htdocs
2、安裝rsync(備份主機只安裝rsync)
1)、1234 tar-zxvf rsync-3.0.9.tar.gz
2)、cdrsync-3.0.9
3)、./configure--prefix=/usr/local/rsync
4)、make;makeinstall
3、建立用戶與密碼認證文件
[root@backup ~]# echo "root:111111" > /etc/ rsyncd/rsyncd.secrets
[root@backup ~]# less /etc/rsyncd/rsyncd.secrets
root:111111
注意:
請記住,在10.10.1.6端建立的密碼文件,只有密碼,沒有用戶名;而在10.10.1.9里建立的密碼文件,用戶名與密碼都有。
許可權:要將/etc/rsyncd/rsyncd.secrets設置為root擁有, 且許可權為600。
#chmod 600 /etc/rsyncd/rsyncd.secrets
4、建立rsync配置文件
[root@backup ~]# vim /etc/rsyncd/rsyncd.conf
啟動rsync服務
# /usr/local/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf
# ps -ef |grep rsync
Rsync服務加入開機啟動項
# echo "/usr/local/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf" >> /etc/rc.local
防火牆開啟rsync埠:873
添加:
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -jACCEPT
重啟:
# /etc/init.d/iptables restart
完成,其實這個時候數據已經同步了!
測試一下:
由於/data0/htdocs/下涉及到一些公司信息,所以就以/data0/htdocs/tmp/為例
主機名可以區別是兩台機器,裡面的內容完全一直,連文件的屬性都一樣
再對裡面修改一下試試,創建一個文件,然後刪除user目錄試試
⑨ 關於linux下文件實時雙向同步問題
#server1地址:192.168.20.1
#shell:
#!/bin/bash
ip2="192.168.20.2"
ip3="192.168.20.3"
src2="/home/server1/"
dst2="/home/server2/"
dst3="/home/server3/"
/usr/local/bin/inotifywait-mrq-ecreate,delete,modify,move$src2|whilereadline;do
/usr/local/bin/unison-batch$src2ssh://$ip2/$dst2
/usr/local/bin/unison-batch$src2ssh://$ip3/$dst3
echo-n"$line">>/var/log/inotify.log
echo`date|cut-d""-f1-4`>>/var/log/inotify.log
done
server2地址192.168.20.2
shell
#!/bin/bash
ip1="192.168.20.1"
ip3="192.168.20.3"
src1="/home/server2/"
dst1="/home/server1/"
dst3="/home/server3/"
/usr/local/bin/inotifywait-mrq-ecreate,delete,modify,move$src1|whilereadline;do
/usr/local/bin/unison-batch$src1ssh://$ip1/$dst1
/usr/local/bin/unison-batch$src1ssh://$ip3/$dst3
echo-n"$line">>/var/log/inotify.log
echo`date|cut-d""-f1-4`>>/var/log/inotify.log
done
server3地址192.168.20.3
shell
#!/bin/bash
ip1="192.168.20.1"
ip2="192.168.20.2"
src3="/home/server3/"
dst1="/home/server1/"
dst2="/home/server2/"
/usr/local/bin/inotifywait-mrq-ecreate,delete,modify,move$src3|whilereadline;do
/usr/local/bin/unison-batch$src3ssh://$ip1/$dst1
/usr/local/bin/unison-batch$src3ssh://$ip2/$dst2
echo-n"$line">>/var/log/inotify.log
echo`date|cut-d""-f1-4`>>/var/log/inotify.log
done
⑩ 求助: linux下怎麼實現兩個文件夾的同步(shell腳本)
提供一個思路給你
源文件夾和目標文件夾,通過ls -R -1
生成一個文件列表。
然後逐個進行回對比
如果不答同,則從源文件夾進行復制
其實雙向同步是比較麻煩的。因為如果一旦兩個文件夾的同一個文件都被修改了,那麼就會出現沖突。
用腳本寫,很麻煩...
最好的方法,是搞一個git或者svn一類的版本管理。