不管你負責(zé)的是商業(yè)環(huán)境還是家用的,丟失數(shù)據(jù)是不允許的,為了防止這種事情,那么要做的就是備份。這個時候制作一個存儲文件的備份計劃絕對不是簡單的事情。
歸檔數(shù)據(jù)文件
你將linux系統(tǒng)作為一個重要的平臺,可以創(chuàng)建一個shell腳本來自動獲取特定目錄的快照。在配置文件中指定所涉及的目錄。
在Linux系統(tǒng)中,歸檔數(shù)據(jù)的主要工具是tar命令,tar命令可以將整個目錄歸檔到單個文件中,下面的例子中是通過tar命令來創(chuàng)建工作目錄歸檔文件。
tar -cf archive.tar /home/sap/projects/.
ls -l archive.tar
由于tar歸檔文件會消耗大量的磁盤空間,最好能夠壓縮一下該文件,這只需要加一個-z選項就行了。它會將tar歸檔文件壓縮成。gzip格式的tar文件,這種文件也叫做tarball.然后用正確的擴展名來表示,用。tar.gz或者.tgz都行。下面的例子創(chuàng)建了項目目錄tarball
tar -zcf archive.tar.gz /home/sap/projects
ls -l archive.tar.gz
現(xiàn)在你已經(jīng)完成了歸檔腳本的主要部分。
你不需要為待備份的新目錄或者文件修改或者編寫新的歸檔腳本,而是可以借助于配置文件。配置文件應(yīng)該包括你希望進行歸檔的每個目錄文件。
cat Files_to_Backup
/home/dap/projects
/home/sap/downloads
/home/does_not_exist
/home/sap/documents
可以讓腳本讀取配置文件,然后將每個目錄加到歸檔列表中,要實現(xiàn)這一點,只需要實現(xiàn)read命令。來讀取這一條記錄就好了。不過 不用像之前那樣,。通過管道將cat命令輸出傳給while循環(huán),在這個腳本中我們使用exec命令來重定向標準輸入(STDIN)。用法如下:
exec <
C
O
N
F
I
G
F
I
L
E
r
e
a
d
F
I
L
E
N
A
M
E
注意,我們?yōu)闅w檔配置文件使用了一個變量,
C
O
N
F
I
G
F
I
L
E
。配置文件中每一條記錄都會被讀入。只要
r
e
a
d
命令在配置文件中發(fā)現(xiàn)還有記錄可讀,它就在變量中返回一個表示成功的退出狀態(tài)
0.
可以將它作為
w
h
i
l
e
循環(huán)的測試條件來讀取配置文件中所有記錄。
w
h
i
l
e
[
CONFIG_FILE read FILE_NAME 注意,我們?yōu)闅w檔配置文件使用了一個變量,CONFIG_FILE。配置文件中每一條記錄都會被讀入。只要read 命令在配置文件中發(fā)現(xiàn)還有記錄可讀,它就在變量中返回一個表示成功的退出狀態(tài)0.可以將它作為while循環(huán)的測試條件來讀取配置文件中所有記錄。 while [
CONFIGF?ILEreadFILEN?AME注意,我們?yōu)闅w檔配置文件使用了一個變量,CONFIGF?ILE。配置文件中每一條記錄都會被讀入。只要read命令在配置文件中發(fā)現(xiàn)還有記錄可讀,它就在變量中返回一個表示成功的退出狀態(tài)0.可以將它作為while循環(huán)的測試條件來讀取配置文件中所有記錄。while[? -eq 0]
do
[…]
read FILE_NAME
done
一旦read命令到了配置文件的末尾,就會返回一個非零狀態(tài)碼。這時腳本會退出while循環(huán)。
在while循環(huán)中,我們需要做兩件事,首先,必須將目錄名加到歸檔列表中,更重要的是要檢查那個目錄是否存在!很可能你從文件系統(tǒng)中刪除一個目錄卻忘卻了更新歸檔配置文件。
可以用簡單的IF語句來檢查目錄是否存在與否。如果木存在,它會被加入要歸檔目錄列表FILE_LIST中,否則就顯示一條警告信息。if 語句如下。
if [-f $FILE_NAME -o -d $FILE_NAME]
then文章來源:http://www.zghlxwxcb.cn/news/detail-431839.html
if file exists,add its name to the list.
FILE_LIST=“$FILE_LIST KaTeX parse error: Expected 'EOF', got '#' at position 19: …E_NAME" ELSE #?IF FILE DOOESN'…FILE_NAME,does not exist.”
echo"Obviously ,I will not include it in this archive."
echo"It is listed on line
F
I
L
E
N
O
o
f
t
h
e
c
o
n
f
i
g
f
i
l
e
.
"
e
c
h
o
"
C
o
n
t
i
n
u
i
n
g
t
o
b
u
i
l
d
a
r
c
h
i
v
e
l
i
s
t
.
.
.
"
e
c
h
o
f
i
F
I
L
E
N
O
=
FILE_NO of the config file." echo"Continuing to build archive list..." echo fi FILE_NO=
FILEN?Ooftheconfigfile."echo"Continuingtobuildarchivelist..."echofiFILEN?O=[$FILE_NO +1] #INCREASE LINE/FILE NUMBER BY ONE.
文章來源地址http://www.zghlxwxcb.cn/news/detail-431839.html
到了這里,關(guān)于Linux編寫簡單的腳本的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!