rsync同步

jopen 9年前發布 | 15K 次閱讀 rsync Linux

1.若有rsync,不需要配置就可以簡單實用

#sudo rsync -av  /home  192.168.1.1:/data/home


2,server配置后在使用

[back_home]  #模塊它為我們提供了一個鏈接的名字,在本模塊中鏈接到了/home目錄;要用[name] 形式  
    path = /home    #指定文件目錄所在位置,這是必須指定的 
  auth users = root   #認證用戶是root  ,是必須在服務器上存在的用戶
  list=yes   #list 意思是把rsync 服務器上提供同步數據的目錄在服務器上模塊是否顯示列出來。默認是yes 。
                如果你不想列出來就no,比較安全的,別人不知道你的服務器上提供了哪些目錄;
  ignore errors  #忽略IO錯誤
  secrets file = /etc/rs.passwd   #密碼存在哪個文件
  comment = linuxsir home  data  #注釋可以自己定義
  exclude = ext1/ ext2/   #ext1\ext2目錄排除,即不同步這2個目錄     
#sudo echo "root:123456" >> etc/rs.passwd #設置賬號密碼,多個賬號密碼,設置多行,并且賬號是系統上存在的
#sudo  chmod 600 /etc/rs.passwd
#sudo /usr/bin/rsync --daemon  --config=/etc/rsyncd/rsyncd.conf  #啟動rsync服務



3.client

rsync中的參數  
    -a 以archive模式操作、復制目錄、符號連接 相當于-rlptgoD
    -r 是遞歸 
  -l 是鏈接文件,意思是拷貝鏈接文件;
    -p 表示保持文件原有權限;
    -t 保持文件原有時間;
    -g 保持文件原有用戶組;
    -o 保持文件原有屬主;
    -D 相當于塊設備文件;
  -z 傳輸時壓縮;
  -P 傳輸進度;
  -v 傳輸時的進度等信息,和-P有點關系,自己試試。可以看文檔;
  -e ssh的參數建立起加密的連接。
  -u只進行更新,防止本地新文件被重寫,注意兩者機器的時鐘的同時
  --progress是指顯示出詳細的進度情況
  --delete是指如果服務器端刪除了這一文件,那么客戶端也相應把文件刪除,保持真正的一致
  --password-file=/password/path/file來指定密碼文件,這樣就可以在腳本中使用而無需交互式地輸入驗證密碼了,
這里需要注意的是這份密碼文件權限屬性要設得只有屬主可讀。

#sudo rsync  --list-only  root@192.168.1.1::            #查看服務器提供的的數據源
#sudo rsync  --list-only  root@192.168.1.1::::back_home #查看back_home里的文件
#sudo rsync -avzP root@192.168.1.1::back_home  /data/home #備份源back_home到本地的home
#sudo rsync -avzP --delete  --password-file=rs.paswd   root@192.168.1.1::back_home  /data/home
#同步源back_home到本地的home并保持內容一致,并指定密碼文件,內容就是密碼,這樣就不用輸入密碼了,適合自動和任務
#echo  '123456' > ./rs.passwd
#sudo  chmod 600   rs.passwd

4,及時同步:

下載源碼包http://sourceforge.net/projects/inotify-tools/
#./configure &&make && sudo  make install
或yum install inotify-tools
或apt-get install  inotify-tools
#同步腳本如下:
#sudo cat inotify.sh
HOST=192.168.1.1
SRC=/home
DST=/data/home
USER=root
 
/usr/local/bin/inotifywait -mrq  -e modify,delete,create,attrib $SRC | while read files
do
   /usr/bin/rsync -avzP --delete --progress --password-file=rs.passwd $SRC $USER@$HOST::$DST
   echo "${files} was rsynced">>/tmp/rsync.log 2>&1
done


5.也可以參考下unison雙休同步,無需配置,sudo apt-get install unison

SRC="/home/"
DST="/data/home/"
IP="root@192.168.1.1"
/usr/bin/unison  --bath -sshargs "-i  /home/kkk/.ssh/id_rsa" $SRC  ssh://$IP/$DST


 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!