Linux下使用SSH、Crontab、Rsync三工具实现数据自动备份
生活随笔
收集整理的這篇文章主要介紹了
Linux下使用SSH、Crontab、Rsync三工具实现数据自动备份
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Linux下使用SSH、Crontab、Rsync三工具實現數據自動備份
??????? 作為網管人員大概都無一例外的經歷過系統備份,尤其是重要系統的備份、重要數據庫系統的備份工作。由于備份是個頻繁而瑣碎的工作,如何能把這個工作做得即簡單又靈活呢?下面就來介紹在Linux下如何使用SSH和Crontab以及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_ras.pub. The key fingerprint is: c3:a0:de:f8:24:8e:f6:0d:ed:0a:b0:a2:2d:aa:d3:8b root@localhost.localdomain 這期間一直按回車即可,這樣公匙/密鑰就創建完畢。 使用如下命令把公匙傳到需要備份的服務器上: #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為 時表示每分鐘都要執行command,f2為*時表示每小時都要執行程式,其余類推。當f1為a-b時表示從第a分鐘到第b分鐘這段時間內要執行,f2為a-b時表示從第a到第b小時都要執行。當f1為*/n時表示每n分鐘個時間間隔執行一次,f2為*/n表示每n小時個時間間隔執行一次,其余類推。當f1為a,b,C,......時表示第a,b,C,......分鐘要執行,f2為a,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協議; 下面看一下如何通過SSH和Rsync工具組合使用方法: #rsync -ave ssh 192.168.1.2:/home/ftp/pub/ /home/ftp/pub/ 需要注意的是,源端目錄名稱末尾的/。在源說明中后綴/通知rsync復制該目錄的內容,但不復制目錄文件自身。要想把目錄包含在要復制內容的最頂層就要去掉/; 使用SSH傳輸rsync流量具有下述優點, 可通過網絡加密數據,而且速度非???#xff0c;使用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目錄下,這樣就達到了自動數據同步備份的目的了。轉載于:https://blog.51cto.com/keygen/1142769
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Linux下使用SSH、Crontab、Rsync三工具实现数据自动备份的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IOS中实现设备摇动检测
- 下一篇: Android学习笔记26:图片切换控件