rsync 1、rsync簡介 用於替代rcp的一個工具,rsync能夠經過rsh或ssh使用,也能以daemon模式去運行,在以daemon方式運行時rsync server會開一個873端口,等待客戶端去鏈接,鏈接時,rsync server會檢查口令是否相符,若經過口令查覈,則能夠經過進行文件傳輸,第一次連通完成時,會把整份文件傳輸一次,之後則就只需進行增量備份; 2、rsync經常使用參數 -v,--verbose 詳細模式輸出; -a,--archive 歸檔模式,表示以遞歸的方式傳輸文件,並保持全部文件屬性不變,至關於使用了組合參數-rlptgoD; -r, --recursive 對子目錄以遞歸模式處理; -l, --links 保留軟鏈結; -p, --perms 保持文件權限; -t, --times 保持文件時間信息; -g, --group 保持文件屬組信息; -o, --owner 保持文件屬主信息; -D, --devices 保持設備文件信息; -H, --hard-links 保留硬鏈結; -S, --sparse 對稀疏文件進行特殊處理以節省DST的 空間; --delete 刪除那些DST中SRC沒有的文件; -z, --compress 對備份的文件在傳輸時進行壓縮處理; 3、rsync的六種不一樣的工做模式; 1)拷貝本地文件; 當SRC和DES路徑信息中不包含冒號":"分隔符時,就啓用這種工做模式: [root@cmmailapp1 /]# rsync -avSH /home/coremail/ /cmbak/ 2)使用一個遠程shell程序(如rsh、ssh)來實現將本地機器的內容拷貝到遠程機器,當DST路徑地址包括冒號":"分隔符時啓動該模式; [root@cmmailapp1 /]# rsync -avSH /home/coremail/ 192.168.11.12:/home/coremail/ 3)使用一個遠程shell程序(如rsh、ssh)來實現將遠程機器的內容拷貝到本地機器,當SRC地址路徑包括冒號":"分隔符時啓動該模式; [root@cmmailapp2 /]# rsync -avSH 192.168.11.11:/home/coremail/ /home/coremail/ 4)從遠程rsync服務器中拷貝文件到本地機。當SRC路徑信息包含"::"分隔符時啓動該模式。 如:rsync -av root@172.16.78.192::www /databack 5)從本地機器拷貝文件到遠程rsync服務器中。當DST路徑信息包含"::"分隔符時啓動該模式。 如:rsync -av /databack root@172.16.78.192::www 6)列遠程機的文件列表。這相似於rsync傳輸,不過只要在命令中省略掉本地機信息便可。 如:rsync -v rsync://192.168.11.11/data 4、rsync服務端的配置; 環境:192.168.11.11爲生產機;192.168.11.12爲備份機; 那麼須要192.168.11.11須要做爲rsync的client; 192.168.11.12做爲rsync的service端; 1、192.168.11.12_service端的配置; 1)[root@cmmailapp2 data]# touch /etc/rsyncd.conf //此文件爲rsync的主配置問題,默認不存在須要手動建立; 2)定義同步的配置; [root@cmmailapp2 data]# cat /etc/rsyncd.conf [data] path = /data/ auth users = coremail uid = root gid = root secrets file = /etc/rsyncd.secrets read only = no [mysql] Path = /home/coremail/var/mysql auth users = coremail uid = root gid = root secrets file = /etc/rsyncd.secrets read only = no [cmxt] Path = /home/coremail/ auth users = coremail uid = root gid = root secrets file = /etc/rsyncd.secrets read only = no 3)定義密碼文件/etc/rsyncd.secrets [root@cmmailapp2 data]# cat /etc/rsyncd.secrets coremail:coremail 4)啓動rsync啓動服務 [root@cmmailapp2 data]# cat /etc/xinetd.d/rsync # default: off # description: The rsync server is a good addition to an ftp server, as it \ # allows crc checksumming etc. service rsync { disable = yes //須要修改成no; socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID } [root@cmmailapp2 data]# chkconfig --level 2345 rsync on [root@cmmailapp2 data]# chkconfig rsync on [root@cmmailapp2 data]# chkconfig --level 2345 xinetd on [root@cmmailapp2 data]# service xinetd restart Stopping xinetd: [ OK ] Starting xinetd: [ OK ] 2、192.168.11.11_client端的配置; [root@cmmailapp1 /]# cat /etc/rsyncd.secrets coremail [root@cmmailapp1 /]# rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::data [root@cmmailapp1 /]# rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::mysql [root@cmmailapp1 /]# rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::cmxt 5、定義定時自行rsync同步,指定同步的日誌所在的路徑/var/log/rsync/下; [root@cmmailapp1 log]# cat /root/rsync.sh DATE=`date +%Y%m%d%H%M` rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::data >/var/log/rsync.date.$DATE rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::mysql >/var/log/rsync.mysql.$DATE rsync -aSvH --password-file=/etc/rsyncd.secrets /home/coremail/ coremail@192.168.11.12::cmxt >/var/log/rsync.cmxt.$DATE chmod u+x /root/rsync.sh [root@cmmailapp1 log]# crontab -l 0 3 * * * /root/rsync.sh 執行時候的日子記錄文件: [root@cmmailapp1 log]# ls |grep 'rsync' rsync.cmxt.201110180915 rsync.date.201110180915 rsync.mysql.201110180915
服務器端必須啓動,客戶端無須啓動。且服務器端密碼文件形式每行一個賬號:密碼,客戶端密碼文件形式只有一個密碼mysql
#rsync -ave ssh test:/home/ftp/pub/ /home/ftp/pub/ 把源路徑中遠端test機器上的/home/ftp/pub/目錄中的內容,經過rsync同步到本地的/home/ftp/pub/目錄下。 ◎當心源路徑結尾時候的/號,後綴/通知rsync複製該目錄的內容,但不復制目錄自己。例如: Code: #rsync -ave ssh test:/home/ftp/pub /home/ftp/ 則會把pub目錄整個同步到本地/home/ftp/路徑中
配置rsync 同步數據 rpm包安裝rsync及配置 [root@Hammer home]# rpm -qa |grep rsync #檢查系統是否安裝了rsync軟件包 rsync-2.6.8-3.1 [root@Hammer CentOS]# rpm -ivh rsync-2.6.8-3.1.i386.rpm # 若是沒有安裝則手動安裝 [root@test rsync-3.0.4]# vim /etc/xinetd.d/rsync 1 配置rsync servervi /etc/xinetd.d/rsync 將disable=yes改成no service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID } 2 配置rsync自動啓動 [root@test etc]# chkconfig rsync on [root@test etc]# chkconfig rsync --list rsync on 3 配置rsyncd.conf [root@test etc]# vim rsyncd.conf uid = root gid = root use chroot = no max connections = 4 strict modes = yes port = 873 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log [backup] path = /srv comment = This is test auth users = scihoo uid = root gid = root secrets file = /home/rsync.ps read only = no list = no 4 確保etc/services中rsync端口號正確 [root@test etc]# vim /etc/services rsync 873/tcp # rsync rsync 873/udp # rsync 5 配置rsync密碼(在上邊的配置文件中已經寫好路徑)/home/rsync.ps(名字隨便寫,只要和上邊配置文件裏的一致便可),格式(一行一個用戶) [root@test etc]# vi /home/rsync.ps scihoo:scihoo 6 配置rsync密碼文件權限 [root@test home]# chown root.root rsync.ps [root@test home]# chmod 400 rsync.ps (只有該用戶可讀寫) 7 啓動配置 [root@test home]# /etc/init.d/xinetd restart Stopping xinetd: [ OK ] Starting xinetd: [ OK ] 8 若是xinetd沒有的話,須要安裝一下 [root@test home]# yum -y install xinetd 啓動rsync server RSYNC服務端啓動的兩種方法 9、啓動rsync服務端(獨立啓動) [root@test home]# /usr/bin/rsync --daemon 10、啓動rsync服務端 (有xinetd超級進程啓動) [root@test home]# /etc/init.d/xinetd reload 11 加入rc.local 在各類操做系統中,rc文件存放位置不盡相同,能夠修改使系統啓動時把rsync --daemon加載進去。 [root@test home]# vi /etc/rc.local /usr/local/rsync –daemon #加入一行 12 檢查rsync是否啓動 [root@test home]# lsof -i :873 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME xinetd 4396 root 5u IPv4 633387 TCP *:rsync (LISTEN) 客戶端配置 1 配置三個過程就能夠了 1.1 設定密碼文件 1.2 測試rsync執行指令 1.3 將rsync指令放入工做排程(crontab) [root@aj1 home]# vi /etc/xinetd.d/rsync # default: off # description: The rsync server is a good addition to an ftp server, as it \ # allows crc checksumming etc. service rsync { disable = yes socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID } 1.1 配置密碼文件 (注:爲了安全,設定密碼檔案的屬性爲:600。rsync.ps的密碼必定要和Rsync Server密碼設定案裏的密碼同樣) [root@aj1 home]# vi rsync.ps sciooo [root@aj1 home]# chown root.root .rsync.ps # 注意必須給權限 [root@aj1 home]# chmod 600 .rsync.ps # 必須修改權限 不然會提示錯誤信息 password file must not be other-accessible 1.2 從服務器上下載文件 [root@aj1 rsync-3.0.4]# rsync -avz --password-file=/home/rsync.ps scihoo@192.168.0.206::backup /home/ 從本地上傳到服務器上去 [root@aj1 rsync-3.0.4]# rsync -avz --password-file=/home/rsync.ps /home scihoo@192.168.0.206::backup