Rsync:非常實用的同步文件命令。
rsync命令是一個遠程數據同步工具,一般企業用作文件定時同步目錄,代碼發布等功能。
1.rsync分為服務端和客戶端,兩端都需要安裝rsync服務。
yum -y install rsync
編輯/etc/xinetd.d/rsync
disable = yes 改為no #表示不禁用rsync。
2.客戶端:編輯/etc/rsyncd.conf 修改以下。服務端推送到客戶端文件的話需要在客戶端修改,即客戶端要接收文件的話要指定一個路徑、權限。
uid = nobody #表示目錄的權限必須要是nobody,若推送報錯權限拒絕,一定是目錄或文件不是nobody權限。
gid = nobody
use chroot = yes
max connections = 30
pid file=/var/run/rsyncd.pid
log file=/var/log/rsyncd.log
list = no
[www1] #同步項 即同步模塊
path = /home/server1 #同步到的路徑
hosts allow = 192.168.50.118 #允許ip
read only = no #是否只讀,一定要no,否則無法推送。
3.服務端:編輯/etc/rsyncd.conf 修改以下。
uid = nobody #表示目錄的權限必須要是nobody,若推送報錯權限拒絕,一定是目錄或文件不是nobody權限。
gid = nobody
use chroot = yes
max connections = 30
pid file=/var/run/rsyncd.pid
log file=/var/log/rsyncd.log
list = no
4.制作rsync啟動腳本 vim /etc/init.d/xinetd
PATH=/sbin:/bin:/usr/bin:/usr/sbin
# Source function library.
. /etc/init.d/functions
# Get config.
test -f /etc/sysconfig/network && . /etc/sysconfig/network
# More config
test -f /etc/sysconfig/xinetd && . /etc/sysconfig/xinetd
RETVAL=0
prog="xinetd"
start(){
[ -f /usr/sbin/xinetd ] || exit 5
[ -f /etc/xinetd.conf ] || exit 6
# this is suitable way considering SELinux is guarding write
# access to PID file
[ $EUID -eq 0 ] || exit 4
echo -n $"Starting $prog: "
# Localization for xinetd is controlled in /etc/synconfig/xinetd
if [ -z "$XINETD_LANG" -o "$XINETD_LANG" = "none" -o "$XINETD_LANG" = "NONE" ]; then
unset LANG LC_TIME LC_ALL LC_MESSAGES LC_NUMERIC LC_MONETARY LC_COLLATE
else
LANG="$XINETD_LANG"
LC_TIME="$XINETD_LANG"
LC_ALL="$XINETD_LANG"
LC_MESSAGES="$XINETD_LANG"
LC_NUMERIC="$XINETD_LANG"
LC_MONETARY="$XINETD_LANG"
LC_COLLATE="$XINETD_LANG"
export LANG LC_TIME LC_ALL LC_MESSAGES LC_NUMERIC LC_MONETARY LC_COLLATE
fi
unset HOME MAIL USER USERNAME
daemon $prog -stayalive -pidfile /var/run/xinetd.pid "$EXTRAOPTIONS"
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/xinetd
return $RETVAL
}
stop(){
[ -f /usr/sbin/xinetd ] || exit 5
[ -f /etc/xinetd.conf ] || exit 6
# this is suitable way considering SELinux is guarding write
# access to PID file
[ $EUID -eq 0 ] || exit 4
echo -n $"Stopping $prog: "
killproc -p /var/run/xinetd.pid $prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/xinetd
return $RETVAL
}
reload(){
[ -f /usr/sbin/xinetd ] || exit 5
[ -f /etc/xinetd.conf ] || exit 6
echo -n $"Reloading configuration: "
killproc $prog -HUP
RETVAL=$?
echo
return $RETVAL
}
restart(){
stop
start
}
condrestart(){
if [ -e /var/lock/subsys/xinetd ] ; then
restart
RETVAL=$?
return $RETVAL
fi
RETVAL=0
return $RETVAL
}
# See how we were called.
case "$1" in
start)
start
RETVAL=$?
;;
stop)
stop
RETVAL=$?
;;
status)
status $prog
RETVAL=$?
;;
restart)
restart
RETVAL=$?
;;
reload|force-reload)
reload
RETVAL=$?
;;
condrestart|try-restart)
condrestart
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"
RETVAL=2
esac
exit $RETVAL
chmod +x /etc/init.d/xinetd
5.開始使用了:
rsync -avz authorized_keys 192.168.0.164::dsa_pub
sending incremental file list
authorized_keys
sent 576 bytes received 33 bytes 1218.00 bytes/sec--delete
total size is 616 speedup is 1.01
6:參數詳解:
-v, --verbose 詳細模式輸出。
-a, --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性
-z, --compress 對備份的文件在傳輸時進行壓縮處理。
--delete 同步刪除 例:rsync -avz --delete /tmp/2/ /var/spool/clientmqueue/ 清楚/var/spool/clientmqueue/下的垃圾。
--exclude="" 排除同步 例--exclude=".svn",提交到svn目錄的時候要排除隱藏的svn目錄。
Rsync:非常實用的同步文件命令。