溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用rsync備份文件/目錄到Linux服務器上的Shell腳本

發(fā)布時間:2022-01-25 09:35:23 來源:億速云 閱讀:145 作者:kk 欄目:開發(fā)技術

這篇文章將為大家詳細講解有關如何使用rsync備份文件/目錄到Linux服務器上的Shell腳本,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

使用該腳本會以交互的方式實施備份,你需要提供遠程備份服務器的主機名/ip地址和文件夾位置。我們使用一個單獨的列表文件,在這個文件中你需要列出要備份的文件/目錄。我們添加了兩個腳本,第一個腳本在每次拷貝完一個文件后詢問密碼(如果你啟用了ssh密鑰驗證,那么就不會詢問密碼),而第二個腳本中,則只會提示一次輸入密碼。

我們打算備份bckup.txt,dataconfig.txt,docs和orcledb。

 [root@Fedora21 tmp]# ls -l
 total 12
 -rw-r--r--. 1 root root 0 May 15 10:43 bckrsync.sh
 -rw-r--r--. 1 root root 0 May 15 10:44 bckup.txt
 -rw-r--r--. 1 root root 0 May 15 10:46 dataconfig.txt
 drwxr-xr-x. 2 root root 4096 May 15 10:45 docs
 drwxr-xr-x. 2 root root 4096 May 15 10:44 oracledb

bckup.txt文件包含了需要備份的文件/目錄的詳情

 [root@Fedora21 tmp]# cat /tmp/bckup.txt
 /tmp/oracledb
 /tmp/dataconfig.txt
 /tmp/docs
 [root@Fedora21 tmp]#

腳本 1:

 #!/bin/bash
 # 將備份列表文件的路徑保存到變量中
 backupf='/tmp/bckup.txt'
 # 輸入一個提示信息
 echo "Shell Script Backup Your Files / Directories Using rsync"
 # 檢查是否輸入了目標服務器,如果為空就再次提示用戶輸入
 while [ x$desthost = "x" ]; do
 # 提示用戶輸入目標服務器地址并保存到變量
 read -p "Destination backup Server : " desthost
 # 結束循環(huán)
 done
 # 檢查是否輸入了目標文件夾,如果為空就再次提示用戶輸入
 while [ x$destpath = "x" ]; do
 # 提示用戶輸入目標文件夾并保存到變量
 read -p "Destination Folder : " destpath
 # 結束循環(huán)
 done
 # 逐行讀取備份列表文件
 for line in `cat $backupf`
 # 對每一行都進行處理
 do
 # 顯示要被復制的文件/文件夾名稱
 echo "Copying $line ... "
 # 通過 rsync 復制文件/文件夾到目標位置
 rsync -ar "$line" "$desthost":"$destpath"
 # 顯示完成
 echo "DONE"
 # 結束
 done
運行帶有輸出結果的腳本
 [root@Fedora21 tmp]# ./bckrsync.sh
 Shell Script Backup Your Files / Directories Using rsync
 Destination backup Server : 104.*.*.41
 Destination Folder : /tmp
 Copying /tmp/oracledb ...
 The authenticity of host '104.*.*.41 (104.*.*.41)' can't be established.
 ECDSA key fingerprint is 96:11:61:17:7f:fa:......
 Are you sure you want to continue connecting (yes/no)? yes
 Warning: Permanently added '104.*.*.41' (ECDSA) to the list of known hosts.
 root@104.*.*.41's password:
 DONE
 Copying /tmp/dataconfig.txt ...
 root@104.*.*.41's password:
 DONE
 Copying /tmp/docs ...
 root@104.*.*.41's password:
 DONE
 [root@Fedora21 tmp]#

腳本 2:

 #!/bin/bash
 # 將備份列表文件的路徑保存到變量中
 backupf='/tmp/bckup.txt'
 # 輸入一個提示信息
 echo "Shell Script Backup Your Files / Directories Using rsync"
 # 檢查是否輸入了目標服務器,如果為空就再次提示用戶輸入
 while [ x$desthost = "x" ]; do
 # 提示用戶輸入目標服務器地址并保存到變量
 read -p "Destination backup Server : " desthost
 # 結束循環(huán)
 done
 # 檢查是否輸入了目標文件夾,如果為空就再次提示用戶輸入
 while [ x$destpath = "x" ]; do
 # 提示用戶輸入目標文件夾并保存到變量
 read -p "Destination Folder : " destpath
 # 結束循環(huán)
 done
 # 檢查是否輸入了目標服務器密碼,如果為空就再次提示用戶輸入
 while [ x$password = "x" ]; do
 # 提示用戶輸入密碼并保存到變量
 # 使用 -s 選項不回顯輸入的密碼
 read -sp "Password : " password
 # 結束循環(huán)
 done
 # 逐行讀取備份列表文件
 for line in `cat $backupf`
 # 對每一行都進行處理
 do
 # 顯示要被復制的文件/文件夾名稱
 echo "Copying $line ... "
 # 使用 expect 來在腳本中輸入密碼
 /usr/bin/expect運行第二個帶有輸出結果的腳本

什么是Linux系統(tǒng)

Linux是一種免費使用和自由傳播的類UNIX操作系統(tǒng),是一個基于POSIX的多用戶、多任務、支持多線程和多CPU的操作系統(tǒng),使用Linux能運行主要的Unix工具軟件、應用程序和網(wǎng)絡協(xié)議。

關于如何使用rsync備份文件/目錄到Linux服務器上的Shell腳本就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI