欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

遠(yuǎn)程鏡像與備份SVN服務(wù)器的方法小結(jié)

 更新時間:2009年01月01日 15:25:19   作者:  
此文講述SVN如何鏡像服務(wù)器,注意是單向鏡像。眾所周知,SVN有自已的鏡像命令svnsync(svn1.4以及以上版本特性),但是部署與維護(hù)確是繁瑣至極,令人望而卻步。

讓我們看看所使用的參數(shù):
v 復(fù)雜的輸出信息
z 壓縮模式, 當(dāng)資料在傳送到目的端進(jìn)行檔案壓縮.
r 復(fù)制所有下面的資料(透過)
t 保留時間點(diǎn)
o 保留檔案所有者(root only)
p保留檔案權(quán)限
g 保留檔案群組
u更新修改過的文件
--progress 顯示傳送的進(jìn)度
--delete 刪除傳送斷已經(jīng)不存在,而目的端存在的檔案
root@192.168.100.80:/home/svn /home/
用root用戶訪問192.168.100.80的/home/svn目錄,然后同步到本機(jī)的/home/目錄下,注意格式,那么鏡像SVN服務(wù)器就會把主SVN服務(wù)器上的/home目錄的svn文件夾整個復(fù)制到鏡像SVN服務(wù)器上的/home下,并保存原屬性不變。
###注意:為什么使用root的用戶呢,因?yàn)榭梢源_保保證同步過來的文件可以保證檔案的具體屬性,這是我們比較關(guān)心的問題,但是root的用戶擁有的權(quán)限太大了,每次都需要輸入root的密碼,一方面這是非常危險的,一方面比較繁瑣。
那么我們首先想到的不需要輸入用戶名和密碼就可以鏡像和傳輸文件,那么必須讓兩臺SVN服務(wù)器互相信任,那么我們需要采用ssh私鑰和公鑰加密技術(shù)。
主SVN服務(wù)器:
ssh-keygen –d
Enter file in which to save the key (/home/root/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/root/.ssh/id_dsa.Your public key has been saved in /home/root/.ssh/id_dsa.pub.The key fingerprint is:32:21:e1:3b:7d:6e:de:4b:39:da:af:38:fe:90:40:61 root@svnserver.com
cd .ssh
id_dsa ------------ 私鑰文件
id_dsa.pub ------------ 公鑰文件
cp id_dsa.pub authorized_keys2 (復(fù)制一個可以被root識別和讀取的公鑰文件)
chmod 600 authorized_keys2 (因安全因?yàn)榻o予600權(quán)限)
cp id_dsa.pub svnserver.pub (再做一份公鑰的副本)
想辦法把這個公鑰的副本移動到鏡像SVN服務(wù)器上面。
cat mirrorsvnserver.pub >> authorized_keys2 (把復(fù)制過來的鏡像SVN服務(wù)器上的公鑰導(dǎo)入到主SVN服務(wù)器的公鑰文件里)
鏡像SVN服務(wù)器:
ssh-keygen –d
Enter file in which to save the key (/home/root/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/root/.ssh/id_dsa.Your public key has been saved in /home/root/.ssh/id_dsa.pub.The key fingerprint is:32:21:e1:3b:7d:6e:de:4b:39:da:af:38:fe:90:40:61 root@mirrorsvnserver.com
cd .ssh
id_dsa ------------ 私鑰文件
id_dsa.pub ------------ 公鑰文件
cp id_dsa.pub authorized_keys2 (復(fù)制一個可以被root識別和讀取的公鑰文件)
chmod 600 authorized_keys2 (因安全因?yàn)榻o予600權(quán)限)
cp id_dsa.pub mirrorsvnserver.pub (再做一份公鑰的副本)
想辦法把這個公鑰的副本移動到主SVN服務(wù)器上面。
cat svnserver.pub >> authorized_keys2 (把復(fù)制過來的主SVN服務(wù)器上的公鑰導(dǎo)入到鏡像SVN服務(wù)器的公鑰文件里)
讓我們里驗(yàn)證公鑰文件中的內(nèi)容:
cat /root/.ssh/authorized_keys2
ssh-dss AAAAB3NzaC1kc3MAAACBAL9iAG+VZkXunZ5KzTivat1deDAQFKdrGY5P2rxRI+QeKClNgfukUNwQmU+a5FqfNsLKlWhGbIfFI1k00Zkc7nwMdG2dtcnWw7oUqPCGizMcoPLXXQhfOPaFoOkB5UPWNkgJobBPZBjJ7nhKZxzzMiujhOVYLvGNDEWI8x3NAAAAFQCqqtJaMgVyMgDexUKbHIBXsSghYIB5U82gTyGb2c4z4AsmQ5M0ds3YHHVLPHRUEn7DspzlNZ7fYWhKzQYWlhPJftuYTrYIEzuXx8Hl8kg7hCEl4hArAgMMcEtmuQ+3x5SkEht3077qUPdC/YzSk7cFNwQlt6nOeYELCIwhs1CXWQXi9E/XSlqepd+gSlAAhVzWc0MgAAAIAy4qWyaB6DT+XWtq23jrFrYeejJyFBVkNVUbEd3GNTHvwKTYuBa7nlh562g5r0riIrHW+a7WGd6U32RVLnqqIwddcHml4kXnondo0qjW4XijYI7jkHN9oAK5mNWnSCYAnot1nra3QXlh9472/l7kTmznumjsDDjAIa7OFY9w== root@svnserver.com
ssh-dss AAAAB3NzaC1kc3MAAACBAPI3YFCQNBof9xA/Fi1S0U4jmliAg/TaWHnx9suaYb5Xc31jW3+axbNURIBnK7cA53q+qBME1DdddSBOq+I0oUpfjAXkOUl/ACRbSRqA1VOaKdI2AOH9tw4jSK0xSqYjj+ReuUnuVMSTOJTQzt1n6YsLj/kjAAAAFQCHE5NqPCIlr5xVFYOZmGysI+CtKQAAAIAb/gjP0f3Ifx0H2A3XzH9fG4YENLd+gz0l07Mq356+IBuPSYxi4JldxZ7j1OkH9j+7+t8AOSyqNqiOzKXpimo0NLjVsEkpn9RXFmzfHHwRholmauDKIbGLvJlTL0ZkjqH3w0plGmVC6YyxOpM4w7XklIvtq3rDZQE4O247yxgAAAIEA2rd2htKfO9I7F+rBxVgszeGrwCfP5gf8sdz32LDd+E4JxzI/b79Tn1ylILb0vGZhRCbFhoLnDIUMR3Lrr5FqGlTf8O2gsvproA5pLqUpgrkhR/7siycplOddftt553yBJNCBkq+E906AwQ72PNs2uLrbKHyVyD1akrD2/hfA= root@svnmirrorserver.com
這樣我們的兩臺SVN服務(wù)器就得到信任了。
讓我們再次執(zhí)行同步命令:
rsync -vzrtopgu --progress --delete root@192.168.100.80:/home/svn /home/
發(fā)現(xiàn)了什么?
已經(jīng)不需要輸入用戶名和密碼了。
最后我們需要設(shè)定人物計(jì)劃了。
crontab –e
*/10 * * * * /usr/local/bin/rsync -vzrtopgu --progress --delete root@192.168.100.80:/home/svn /home/ &
退出保存。
這個例子是每10分鐘同步一次,當(dāng)然我們也可以設(shè)置我們想要的時間。
另外一個例子:每小時同步一次
* */1 * * * /usr/local/bin/rsync -vzrtopgu --progress --delete [email=root@192.168.100.80:/home/svn]root@192.168.100.80:/home/svn /home/ &
備注:
(1) 所有同步都為增量備份,筆者不建議大家都采用增量備份對SVN進(jìn)行備份,這有可能導(dǎo)致SVN庫日后不可用,但筆者這里將盡有不下50個SVN庫,同步幾月都沒發(fā)生任何問題,都能正常被使用。但是為了謹(jǐn)慎起見,希望大家再做一個定期全備份,建議每周一次。如有用戶因此丟失,筆者將不負(fù)任何責(zé)任。
(2) 此方法適應(yīng)Windows上使用,rsync程序名稱為cwRsync
(3) rsync有二種配置方式:一種是ssh,scp,stock等協(xié)議直接傳輸,無需修改配置文件(筆者用法),第二種是修改rsync配置文件,映射路徑和指定密碼(支持匿名)
(4) ssh + rsync + crontab只是復(fù)制文件而已,無需依賴apache和subversion程序
附件:
rsync 所以試用參數(shù)列表:
-h , --help 顯示rsync求助資訊
--version 顯示rsync版本
-v , --verbose 復(fù)雜的輸出信息
-q , --quiet 安靜模式,幾乎沒有訊息產(chǎn)生,
常用在以cron執(zhí)行rsync
-I, --ignore-times 通常rsync為了加快速度會忽略同樣檔案大小且同樣,同樣存取時間點(diǎn)的檔案
可以通過此參數(shù)開關(guān)此快速檢查.
--size-only rsync
只檢查檔案大小是否改變,不管時間存取點(diǎn)是否改變
通常用在mirror, 且對方時間不太正確時
-c, --checksum 在傳送之前透過128bit的md4檢查碼來檢查所有要傳送的檔案(會托滿速度);
-a, --archive archive mode 權(quán)限保存模式,相當(dāng)于 -rlptgoD 參數(shù).
很快速的保存幾乎所有的權(quán)限設(shè)定,除了硬式連接(透過-H設(shè)定).
-r, --recursive 復(fù)制所有下面的資料(透過)
-R, --relative 使用相對路徑
如: rsync foo/bar/foo.c remote:/tmp/ 在遠(yuǎn)端產(chǎn)生/tmp/foo.c檔案
rsync -R foo/bar/foo.c remote:/tmp/ 在遠(yuǎn)端產(chǎn)生/tmp/foo/bar/foo.c 檔案
-R, --relative 不使用相對路徑
-b, --backup 目的地端先前已經(jīng)存在的檔案在傳輸或刪除前會被備份
--backup-dir=DIR 設(shè)定備份的資料夾
--suffix=SUFFIX 指定備份的檔案名稱字尾形式(預(yù)設(shè)為~)
-K, --keep-dirlinks 接收方將連接到資料夾的檔案視為資料夾處理
-l, --links 復(fù)制所有的連接
-H, --hard-links 保留硬式連結(jié)
-p, --perms 保留檔案權(quán)限
-o, --owner 保留檔案所有者(root only)
-g, --group 保留檔案群組
-u –update 更新修改過的文件
-D, --devices 保留device資訊(root only)
-t, --times 保留時間點(diǎn)
-n, --dry-run 不實(shí)際執(zhí)行傳送, 只顯示將會有的傳輸動作
-S, --sparse 嘗試去處理稀疏的檔案, 讓這些檔案在目的端占去較少的磁碟空間
-W, --whole-file 復(fù)制所有的檔案, 不額外作檢查
--no-whole-file 關(guān)閉 --whole-file 參數(shù)
-x, --one-file-system 不要跨越檔案系統(tǒng)分界(只在一個檔案系統(tǒng)處理)
-B, --block-size=SIZE 強(qiáng)制透過rsync程式去比對修復(fù)block-sizeforce
-e --rsh=COMMAND 定義所試用的remote shell
--rsync-path=PATH 定義rsync在遠(yuǎn)端機(jī)器存放資料的路徑
--existing 只對比更新目的端已經(jīng)存在的檔案
--ignore-existing 忽略目的斷已經(jīng)存在的檔案(也就是不更新)
--delete 刪除傳送斷已經(jīng)不存在,而目的端存在的檔案
--delete-excluded 除了把傳送端已經(jīng)不存在, 而目的端存在的檔案刪除之外, 也刪除 --exclude 參數(shù)所包含的檔案
--delete-after rsync預(yù)設(shè)會在檔案傳送前進(jìn)行相關(guān)刪除動作確保接收端有足夠的檔案空間,
單可以透過 --delete-after 讓刪除動作在檔案傳送后在進(jìn)行刪除
--ignore-errors 忽略任何錯誤即使是I/O error 也進(jìn)行 --delete 刪除動作
--max-delete=NUM 定義rsync不要刪除超過NUM個檔案
--partial rsync若遇到傳輸過程中斷時, 會把那些已經(jīng)傳輸?shù)臋n案刪除.
在某種狀況下保留那些部分傳送的檔案是令人高興的;
你可以透過 --partial 參數(shù)達(dá)到這個目的.
--partial-dir=DIR 在 --partial 參數(shù)啟動時, 你還是可以定義rsync把那些部分傳送的檔案
寫入定義的資料夾, 而非直接寫入目的端,需要注意的是,
此資料夾不應(yīng)該被其他試用者可以寫入.(如:/tmp)
--force 當(dāng)目的端資料夾被傳送端非資料夾名稱覆蓋時, 強(qiáng)制rsync刪除資料夾, 即使該資料夾不是空的.
--numeric-ids 不將傳送端檔案的uid及gid值, 與目的端的使用者/群組進(jìn)行配對,
若傳送端并沒有uid及gid的對應(yīng)名稱(如:原帳號群組被刪除的遺留檔案),
或目的端沒有相對應(yīng)的帳號/群組, 保留數(shù)字型式的uid/gid
--timeout=TIMEOUT 設(shè)定I/O 超時的時間(秒). 超過這個秒數(shù)而沒有資料傳送, rsync將會結(jié)束. 預(yù)設(shè)為0,也就是沒有定義超時時間
-T, --temp-dir=DIR 定義rsync在接收端產(chǎn)生暫時性的復(fù)制檔案時使用資料夾暫存,
預(yù)設(shè)時直接在接收端資料夾直接產(chǎn)生暫存檔案
--compare-dest=DIR 定義rsync在目的端建立資料夾來比對傳送過來的檔案.
--link-dest=DIR 與 --compare-dest 相同,但同時會針對無法改變的檔案建立硬式連結(jié).
-z, --compress 壓縮模式, 當(dāng)資料在傳送到目的端進(jìn)行檔案壓縮.
-P -P參數(shù)和 --partial --progress 相同.只是為了把參數(shù)簡單化.
-C, --cvs-exclude 排除那些通常不希望傳送的檔案, 定義的方式與CVS傳送相同:
RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS .make.state
.nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej
.del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core .svn/
符合以上條件的都會被忽略不傳送.
--exclude=PATTER 符合PATTERN(規(guī)則表示式)樣式的檔案不僅行傳送
--exclude-from=FILE 和 --exclude 參數(shù)相同, 不過是把不進(jìn)行傳送的檔案事先寫入某一檔案.
執(zhí)行時, 透過此參數(shù)讓rsync讀取.
(; #開頭的行列或者空白會被rsync忽略)
--include=PATTERN 定義rsync不要排除符合pattern樣式的檔案
--include-from=FILE 和--include參數(shù)相同,只不過把要包含的檔案寫到某一檔案.
--files-from=FILE 把要傳送的檔案名稱都精確的寫入某一檔案, 讓rsync讀取.
如: rsync -a --files-from=/tmp/foo /usr remote:/backup
-0 --from0 定義檔案所要讀取的檔案時null字元結(jié)尾.
--version 現(xiàn)四版本信息.
--daemon 定義rsync以daemon型態(tài)執(zhí)行
--no-detach 當(dāng)以daemon形態(tài)執(zhí)行時,不要進(jìn)行分裂且變成背景程序.
--address=ADDRESS 定義所要連接(bind)的ip位置或者是host名稱(daemon限定)
--config=FILE 定義所要讀取的設(shè)定檔rsyncd.conf位置(daemon限定)
預(yù)設(shè)值為 /usr/local/etc/rsyncd.conf
--port=PORT 定義rsyncd(daemon)要旨行的port(預(yù)設(shè)為tcp 873)
--blocking-io 使用blocking I/O連結(jié)遠(yuǎn)端的shell, 如rsh, remsh
--no-blocking-io 使用non-blocking連結(jié)遠(yuǎn)端的shell, 如ssh(預(yù)設(shè)值)
--stats 顯示檔案傳送時的資訊狀態(tài)
--progress 顯示傳送的進(jìn)度.(給檔案傳送時,怕無聊的人用的..)
--log-format=FORMAT 定義log的格式(在rsyncd.conf設(shè)定)
--password-file=FILE 從檔案讀取與遠(yuǎn)端rsync伺服務(wù)連結(jié)的密碼
--bwlimit=KBPS 定義傳輸頻寬的大小(KBytes/秒)
--write-batch=FILE 把記錄資料寫入一個檔案(給其他相同環(huán)境且相同需求的機(jī)器試用)
--read-batch=FILE 透過讀取記錄檔案來進(jìn)行傳輸.(檔案由 --write-batch 參數(shù)產(chǎn)生)
--checksum-seed=NUM 定義檔案 checksum-seed 的大小(byte)
-4 --ipv4 使用IPv4協(xié)定
-6 --ipv6 使用IPv6協(xié)定

相關(guān)文章

最新評論