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