rsync配置和使用
:
?
ubuntu 缺省安裝的安裝中, rsync 服務(wù)是沒有開啟的。需要做 3 步:
1 、修改 /etc/default/rsync ,讓 rsync 服務(wù)在開機(jī)的時候啟動。
$ sudo vi /etc/default/rsync
將 RSYNC_ENABLE=false 改為 RSYNC_ENABLE=true
2 、創(chuàng)建一個 rsyncd.conf ,缺省安裝中是沒有這個文件的。
$ sudo vi /etc/rsyncd.conf
輸入以下幾行:
uid=nobody
gid=nobody
max connections=3
use chroot=no
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
secrets file=/etc/rsync.pwd
3 、啟動 rsync 服務(wù)。
$ /etc/init.d/rsync start
?
?
基本命令:
? rsync -avz ./libserver1.0.1 cxf@202.117.15.144:/home/cxf/backup? 目錄上傳
? rsync -avz cxf@202.117.15.144:/home/cxf/libserver ./backup?????? 目錄下載
? rsync -avz ./libserver1.0.1./* cxf@202.117.15.144:/home/cxf/backup 文件上傳
? rsync -avz cxf@202.117.15.144:/home/cxf/libserver/* ./backup????? 文件下載
?
一、通過 rsh 或 ssh 命令
在沒有建立 rsync 服務(wù)器的情況下,我們可以利用 rsync 命令直接進(jìn)行快速的差異備份:
CODE:
命令格式:
#rsync [option] 源路徑 目標(biāo)路徑
其中:
[option] :
a: 使用 archive 模式,等于 -rlptgoD ,即保持原有的文件權(quán)限
z: 表示傳輸時壓縮數(shù)據(jù)
v: 顯示到屏幕中
e: 使用遠(yuǎn)程 shell 程序(可以使用 rsh 或 ssh )
--delete: 精確保存副本,源主機(jī)刪除的文件,目標(biāo)主機(jī)也會同步刪除
--include=PATTERN: 不排除符合 PATTERN 的文件或目錄
--exclude=PATTERN: 排除所有符合 PATTERN 的文件或目錄
--password-file: 指定用于 rsync 服務(wù)器的用戶驗證密碼
?
源路徑和目標(biāo)路徑可以使用如下格式:
rsync://[USER@]Host[:Port]/Path <--rsync 服務(wù)器路徑
[USER@]Host::Path <--rsync 服務(wù)器的另一種表示形式
[USER@]Host:Path <-- 遠(yuǎn)程路徑
LocalPath <-- 本地路徑
?
※ 需要注意的是,來源或目的路徑最少要有一個是本地路徑,如果忽略本地路徑,則只會列出遠(yuǎn)端的文件列表。
例子:
CODE:
#rsync -ave ssh test:/home/ftp/pub/ /home/ftp/pub/
?
把源路徑中遠(yuǎn)端 test 機(jī)器上的 /home/ftp/pub/ 目錄中的內(nèi)容,通過 rsync 同步到本地的 /home/ftp/pub/ 目錄下。
◎ 小心源路徑結(jié)尾時候的 / 號,后綴 / 通知 rsync 復(fù)制該目錄的內(nèi)容,但不復(fù)制目錄本身。例如:
CODE:
#rsync -ave ssh test:/home/ftp/pub /home/ftp/
則會把 pub 目錄整個同步到本地 /home/ftp/ 路徑中
?
CODE:
#rsync -azv --delete rsync://linuxing@192.168.1.100/blog /var/www/html/
通過 linuxing 登陸到 192.168.1.100 中,同步 rsync 服務(wù)器的 blog 項到本地的 /var/www/html/ ,并刪除本地上源路徑中不存在的文件或目錄。
※ 千萬要注意 --delete 參數(shù),在使用此參數(shù)的時候,建議用絕對路徑指定本地目錄,防止清空當(dāng)前目錄。
二、建立 rsync 服務(wù)器
當(dāng)服務(wù)器沒有開通 ssh ,或備份方?jīng)]有 ssh 權(quán)限的時候,我們可以通過建立 rsync 服務(wù)器,進(jìn)行匿名的數(shù)據(jù)同步。
要使用 rsync 服務(wù),需要建立服務(wù)端和客戶端:
1 、服務(wù)端
主配置文件:
CODE:
#vi /etc/rsyncd.conf
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
[test] #rsync 區(qū)段的設(shè)定名稱
path = /var/www/html/test # 需要同步的數(shù)據(jù)存放路徑
comment = test folder # 注釋
uid = apache # 采用什么身份進(jìn)行文件讀取
gid = apache # 同上,必須是有讀取 path 權(quán)限的用戶、組
ignore errors # 忽略錯誤
read only = yes # 只讀
list = no # 不能列表
auth users = linuxing # 連接 rsync 服務(wù)的帳號
secrets file = /etc/rsyncd.secrets # 指定存放帳號密碼的位置
帳號密碼文件:
CODE:
#vi /etc/rsyncd.secrets
# 格式:帳號 : 密碼 (每行一組,帳號和密碼用 : 號分開)
linuxing:backup
保存后,需要保證用戶是 root ,權(quán)限是 600
CODE:
#chown root:root /etc/rsyncd.secrets
#chmod 600 /etc/rsyncd.secrets
啟動服務(wù):
#rsync --daemon
保證開機(jī)自動啟動:
修改 /etc/xinetd.d/rsync 文件,把其中的 disable=yes 改為 disable=no
CODE:
#sed -i -e "/disable/{ s/yes/no/ }" /etc/xinetd.d/rsync
#service xinetd.d restart
?
2 、客戶端
使用用法一中涉及到 rsync:// 的方法即可。
如果 rsync 服務(wù)器需要密碼驗證,可以增加 --password-file 參數(shù):
CODE:
#rsync -azv --delete rsync://linuxing@192.168.1.100/test /var/www/html --password-file=/etc/test
#vi /etc/test
# 指定訪問密碼
bakcup
#chmod 600 /etc/test
3 、定時
另外,由于 rsync 客戶端沒有定時功能,我們可以通過在 crontab 中增加計劃任務(wù)實現(xiàn)定時的同步,如:(不要使用 -v 參數(shù),防止刷屏)
CODE:
#crontab -e
0 22 * * 1-5 /usr/bin/rsync -az --delete rsync://linuxing@192.168.1.100/test /var/www/html --password-file=/etc/test
# 指定星期一到五,每晚十點整進(jìn)行同步
三、總結(jié)
使用 rsync 的優(yōu)點:可通過 ssh 進(jìn)行網(wǎng)絡(luò)加密傳輸,也可以利用 ssh 客戶端密鑰建立信任關(guān)系。當(dāng)在兩臺計算機(jī)之間保持大型、復(fù)雜目錄結(jié)構(gòu)的同步時候,比 tar 或 wget 等方式都要快。而且可以做到精確同步。
?
四、附錄
如果是通過編譯安裝的 rsync (如 FreeBSD ),路徑有點不同:
服務(wù)器的配置文件在: /usr/local/etc/rsyncd.conf
啟動文件: /usr/local/etc/rc.d/rsyncd.sh
命令文件: /usr/local/bin/rsync
系統(tǒng)啟動托管: /etc/rc.conf (增加 rsyncd_enable="YES" )
?
http://blog.csdn.net/adcxf/archive/2009/03/10/3975119.aspx
?
#!/bin/bash
#already install rsync
if test -e /etc/default/rsync.bak
thenpwd
elsesudo cp /etc/default/rsync /etc/default/rsync.bak
fi
#let rsync service start with the machine
sudo sed -i 's/RSYNC_ENABLE=false/RSYNC_ENABLE=true/' /etc/default/rsync
#if not exist, then create a file named rsyncd.conf
if test -e /etc/rsyncd.conf
thensudo cp /etc/rsyncd.conf /etc/rsyncd.conf.bak
elsesudo touch /etc/rsyncd.conf
fi
sudo cat <<END >/etc/rsyncd.conf
uid=nobody
gid=nobody
max connections=3
use chroot=no
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
secrets file=/etc/rsyncd.secrets
auth users=ct #the account to connect rsync
END
if ! test -e /etc/rsyncd.secrets
thensudo touch /etc/rsyncd.secrets
fi
echo 'ct:550336392ctqazplm' >> /etc/rsyncd.secrets
sudo chmod 600 /etc/rsyncd.secrets
#start-up the rsync service
sudo /etc/init.d/rsync start
sudo rsync --daemon
總結(jié)
以上是生活随笔為你收集整理的rsync配置和使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PS发光眩光效果插件:BBTools G
- 下一篇: 生信宝典之傻瓜式(五) 文献挖掘查找指定