近段時間工作需要做了些scp和rsync的異地安全備份,整理了一下,希望多大家有用。
scp的備份指南:
需求:用scp自動完成異地文件的定時copy
難點(diǎn):如何讓異地主機(jī)建立安全的信任關(guān)系
1、在A機(jī)器上用root運(yùn)行ssh-keygen,將生成/root/.ssh/identity和/root/.ssh/identity.pub兩個文件;
2、在A機(jī)器上運(yùn)行scp /root/.ssh/identity.pub
test@192.168.1.10:/upload/.ssh/authorized_keys(假設(shè)B機(jī)器的IP地址為192.168.1.10,B
機(jī)器上開了用戶test,要上傳到的目錄是/upload,需輸入密碼)。目的是將本地的identity.pub放到遠(yuǎn)程機(jī)器上并改名為
authorized_keys,這樣就建立了新任主機(jī),以后就不需要每次ssh都需要輸入密碼了;
3、通過crontab建立腳本,例:30 02 * * 1-5 scp /home/data/* test@192.168.1.10:/upload。
(每天2:30am自動將/home/data下面的所有文件以test用戶名傳到遠(yuǎn)程主機(jī)192.168.1.10的/upload目錄中);
認(rèn)證原理:
如果你希望從A作為用戶user1 SSH 到B 作為用戶user2, 若要用RSA鍵對法認(rèn)證且不需要密碼,則B上的ssh
后臺程序拿出~user2/.ssh/authorized_keys中的與A有關(guān)的RSA公鑰來對A上的以user1身份運(yùn)行的ssh客戶程序進(jìn)行挑
戰(zhàn),前面我們已經(jīng)把A上的identity.pub拷貝到B上作為authorized_keys了。則A保持私鑰identity,而B上的sshd又
拿出A的公鑰來挑戰(zhàn),因此成功,你可以加很多行到authorized_keys以允許其它服務(wù)器的公鑰可以加進(jìn)來。
scp特點(diǎn):
使用ssl加密,安全性高。
rsync的備份指南:
需求:用rsync完成異地文件的同步
難點(diǎn):如何建立異地信任關(guān)系
1、在A主機(jī)上(rsync服務(wù)器)上編譯安裝rsync,需要版本在2.4.3以上(http://rsync.samba.org),在/etc目錄下建立rsyncd.conf文件,內(nèi)容如下:
uid = nobody
gid = nobody
use chroot = no # 不使用chroot
max connections = 4 # 最大連接數(shù)為4
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock # 日志記錄文件
[test] # 這里是認(rèn)證的模塊名,在客戶端需要指定
path = /home/test # 需要同步的目錄
comment = test folder
uid = root
ignore errors # 可以忽略一些無關(guān)的IO錯誤
read only = yes # 只讀
list = no # 不允許列文件
auth users = rsynctest # 認(rèn)證的用戶名,如果沒有這行,則表明是匿名
secrets file = /etc/test.scrt # 認(rèn)證用戶密碼文件
2、在/etc下建立test.scrt文件,輸入:
用戶名:密碼
例:rsynctest:testrsync
將文件屬性修改為600(千萬注意)
3、啟動rsync服務(wù):rsync --daemon (rsync運(yùn)行在tcp 873端口,可以通過netstat -an|grep LISTEN察看)。
4、在B主機(jī)上(rsync客戶機(jī))上建立/etc/test文件,內(nèi)容為A主機(jī)的密碼,例:
testsync
5、用crontab建立腳本,例:0 21 * * 1-5 rsync -vzrtp --progress --delete
--password-file=/etc/test rsynctest@192.168.1.10::test /home/rsynctest
rsync中的參數(shù):v是verbose,z是壓縮,r是recursive,tp都是保持文件原有屬性如屬主、時間
的參數(shù)。--progress是指顯示出詳細(xì)的進(jìn)度情況,--delete是指如果服務(wù)器端刪除了這一文件,那么客戶端也相應(yīng)把文件刪除,保持真正的一致。--password-file=/etc/test來指定密碼文件,這樣就可以在腳本中使
用而無需交互式地輸入驗證密碼了,這里需要注意的是這份密碼文件權(quán)限屬性要設(shè)得只有屬主可讀(600)。
rsynctest@192.168.1.10中,rsynctest是指定密碼文件中的用戶名,192.168.1.10是A主機(jī)的IP地
址::test是指模塊名[test],也就是在/etc/rsyncd.conf中自定義的名稱。最后的/home/rsynctest是備份到本地的
目錄名。
(也可以用-e ssh的參數(shù)建立起加密的連接,然后和scp中信任主機(jī)的辦法一樣如法炮制)
(在上面實例中的rsynctest并不是真實的用戶,可以根據(jù)自己需要文本定義,這也是使用rsync的一大好處)
rsync的特點(diǎn):
特性如下:
1、可以鏡像保存整個目錄樹和文件系統(tǒng)。
2、可以很容易做到保持原來文件的權(quán)限、時間、軟硬鏈接等等。
3、無須特殊權(quán)限即可安裝。
4、優(yōu)化的流程,文件傳輸效率高。
5、可以使用rcp、ssh等方式來傳輸文件,當(dāng)然也可以通過直接的socket連接。
6、支持匿名傳輸。
rsync的功能還很強(qiáng)大,深入的眼就可以到官方網(wǎng)站上了解。