Linux下使用SSH、Crontab、Rsync三工具實現數據自動備份

Linux下使用SSH、CrontabRsync三工具實現數據自動備份

作爲網管人員大概都無一例外的經歷過系統備份,尤其是重要系統的備份、重要數據庫系統的備份工作。由於備份是個頻繁而瑣碎的工作,如何能把這個工作做得即簡單又靈活呢?下面就來介紹在Linux下如何使用SSHCrontab以及Rsync工具來進行數據的自動備份與同步。
一、SSH無密碼安全登錄

爲什麼要選擇SSH ?SSH又是什麼呢?可以說它是替代以前Telnet的遠程登錄工具,SSH的英文全稱是Secure Shell。用戶可以把所有傳輸的數據進行加密,這樣即使網絡中的***能夠劫持用戶所傳輸的數據,如果不能解密的話,也不能對數據傳輸構成真正的威脅。而且SSH的數據傳輸是經過壓縮的,可以加快傳輸的速度,這就是SSH 目前能替代Telnet遠程登錄工具的原因。
   說到安全,SSH提供兩種級別的安全驗證,一種是基於口令的安全驗證。只要用戶知道自己賬號和口令,就可以登錄到遠程主機。所有傳輸的數據都會被加密,但是不能保證用戶正在連接的服務器就是用戶想連接的服務器,可能會有別的服務器在冒充真正的服務器,這存在着潛在的威脅。一種是基於密匙的安全驗證。需要依靠密匙, 也就是用戶必須爲自己創建一對公匙,密鑰,並把公用密匙放在需要訪問的服務器上。如果需要連接到SSH服務器上,客戶端軟件就會向服務器發出請求,請求使用用戶的密匙進行安全驗證。服務器收到請求之後,先在服務器上用戶的主目錄下找到該用戶的公用密匙,然後把它和用戶發送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用公用密匙加密“質詢”並把它發送給客戶端軟件。客戶端軟件收到“質詢” 之後就可以用用戶的私人密匙解密再把它發送給服務器。
下面做的就是利用第二種基於密匙的安全驗證的登錄,具體方法如下:
使用如下命令在需要備份的機器上創建一對公鑰/密鑰:
#ssh-keygen -t rsa
Generation public/private rsa key pair.
Enter file in which to save the key(/root/.ssh/id_rsa):
Enter passphrase(empty for no passphrase):
Enter same passphrase again:
Your identiflcation has been save in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
c3:a0:de:f8:24:8e:f6:0d:ed:0a:b0:a2:2d:aa:d3:8b [email protected]ldomain
這期間一直按回車即可,這樣公匙/密鑰就創建完畢。
使用如下命令把公匙傳到需要備份的服務器上:
#ssh 192.168.1.2
#mkdir .ssh
#chmod 0700 .ssh
遠程登錄到需要備份的服務器上並且創建.ssh目錄。
#scp .ssh/id-rsa.pub 192.168.1.2 : .ssh/authorized_keys2
上述命令可以把公鑰遠程傳過去。
這樣一個SSH基於密匙的安全驗證登錄就簡單的做完了,現在就可以從192.168.1.1直接用“ssh 192.168.1.2”無密碼自動登錄過去了,這樣就簡單而又安全的實現了自動登錄目的, 可以爲下面定時做備份打下前題。
二、定時數據同步

這裏把定時觸發和同步一起來簡單介紹一下,Crontab是個能定時執行命令的一個工具, 它是用來讓使用者在固定時間或固定間隔執行程式之用,下面就介紹一下這個命令的常用參數。
Crontab命令參數:
-e執行文字編輯器來設定時程表,內定的文字編輯器是VI,如果你想用別的文字編輯器,則請先設定VISUAL環境變數來指定使用那個文字編輯器(比如說setenvVISUALjce)
-r刪除目前的時程表。
-I列出目前的時程表。
Crontab時程表示格式如下:f1 f2 f3 f4 f5 command
其中,f1是表示分鐘,f2表示小時,f3表示一個月份中的第幾日,f4表示月份,f5表示一個星期中的第幾天。Command表示要執行的命令。當f1爲*時表示每分鐘都要執行commandf2*時表示每小時都要執行程式,其餘類推。當f1a-b時表示從第a分鐘到第b分鐘這段時間內要執行,f2a-b時表示從第a到第b小時都要執行。當f1*/n時表示每n分鐘個時間間隔執行一次,f2*/n表示每n小時個時間間隔執行一次,其餘類推。當f1a,b,c,......時表示第a,b,c,......分鐘要執行,f2a,b,c,...... 時表示第a,b,c,......個小時要執行,其餘類推。當然也可以將要定時執行的命令存放在預備文檔裏,這裏就得用crontab file的方式來設定時程表。
三、數據同步

現在來介紹一下如何讓數據同步的一個工具,Rsync可以讓數據同步,下面看一下一些Rsync的主要參數:
-v--verbose 輸出的信息;
-q--quiet 安靜模式,幾乎沒有信息產生.常用在以cron執行rsync;
-a--archive archive mode權限保存模式,相當於-rlptgoD 參數;
-p--perms 保留檔案權限;
-o--owner保留檔案所有者(root only)
-g--g rouP 保留檔;案羣;
-d--devices 保留device 信息(root only);
-e--h=COMMAND定義所使用的remote shell;
-4 --ipv4 使用IPv4協議;
-6 --ipv6 使用IPv6協議;
下面看一下如何通過SSHRsync工具組合使用方法:
#rsync -ave ssh 192.168.1.2:/home/ftp/pub/ /home/ftp/pub/
需要注意的是,源端目錄名稱末尾的/。在源說明中後綴/通知rsync複製該目錄的內容,但不復制目錄文件自身。要想把目錄包含在要複製內容的最頂層就要去掉/;
使用SSH傳輸rsync流量具有下述優點, 可通過網絡加密數據,而且速度非常快,使用SSH客戶端密鑰建立的任何信任關係。如果要在兩臺計算機之間保持大型、複雜目錄結構的同步性(尤其是兩者間的差異很小時) 那麼rsync就是一種使用起來極爲方便(並且執行速度很快)、隨心所欲的工具。
#crontab -e
0 17 * * 1-5 rsync -ave ssh 192.168.1.2:/my /my
上面的操作"crontab-e"命令是編輯定時啓動腳本,然後在週一到週五的每天下午5點執行SSH遠程自動登錄然後把192.168.1.2/my目錄及目錄下的所有東西同步到本地的/my目錄下,這樣就達到了自動數據同步備份的目的了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章