国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Linux程式設(shè)計-11.ShellScript(bash)--(3)用於自動備份的ShellScript

2019-11-18 17:25:28
字體:
供稿:網(wǎng)友
一個用於自動備份的ShellScript
我們先前提到,可利用ShellScript搭配crond來作定期的工作。要作定期性的工作,在UNIX上,就是與crond的搭配運用。

--------------------------------------------------------------------------------

首先我們先來研究如何對系統(tǒng)進行備份。
要對系統(tǒng)進行備份,不外乎便是利用一些壓縮工具。在許多UNIX系統(tǒng)上,tar及gzip是defacto的資料交換標準。我們經(jīng)常可以看見一些tar.gz或tgz檔,這些檔案,被稱為tarball。當然了,您也可以用bzip2、zip等等壓縮工具來進行壓縮,不必限定於gzip。但tar配合gzip是最普遍的,也是最方便的方式。

要將我們想要的資料壓縮起來,進行備份,可以結(jié)合tar及gzip一起進行。方式有很多種,最常用的指令是以下這一種:

tar-cfile/dir...|gzip-9>xxxx.tar.gz

您也可以分開來做:

tar-rfile/dir...-fxxxx.tar
gzip-9xxxx.tar



tar-rfile/dir...-fxxxx.tar
gzip-9xxxx.tar.gz



--------------------------------------------------------------------------------

在解過linux下檔案備份的基本知識後,我們來寫一個將檔案備份的Script。
#!/bin/sh
#Filename:backup

DIRS="/etc/var/your_directories_or_files"
BACKUP="/tmp/backup.tgz"

tar-c$DIRS|gzip-9>$BACKUP

其中DIRS放的是您要備份的檔案及目錄,BACKUP是您的備份檔。可不要將/tmp放進DIRS中,那樣做,您是在做備份的備份,可能將您的硬碟塞爆。



--------------------------------------------------------------------------------

接下來測試
[foxman@foxmanbash]#chmod755backup
[foxman@foxmanbash]#./backup

執(zhí)行完成後在/tmp就會有一個backup.tgz,里面儲存了您重要的資料。您可用

gzip-dc/tmp/backup.tgz|tar-vt

tarvtfz/tmp/backup.tgz

來看看里面的檔案列表。

要解開時,可用以下指令來完成復(fù)原:

gzip-dc/tmp/backup.tgz|tar-xv

tarxvfz/tmp/backup.tgz

備份通常是僅備份系統(tǒng)通常最重要的部份,/etc可說是不可缺少的一部份。另外,看您系統(tǒng)中有那些重要的資料需要備份。通常來說,您沒有必要備份/bin、/sbin、/usr/bin、/usr/sbin、/usr/X11R6/bin等等這些執(zhí)行檔目錄。只要備份您重要的檔案即可,別把整個硬碟備份,那是蠻呆的動作。



--------------------------------------------------------------------------------

如果您有許多臺機器,可利用其中一臺任務(wù)較輕的內(nèi)部網(wǎng)路主機,做為主要備份主機。將所有機器都自動執(zhí)行備份,然後利用NFS/Coda/Samba等網(wǎng)路檔案系統(tǒng),將備份的資料放到該備份機器中,該機器則定時收取備份資料,然後您再由該機器中進行一次備份。
這里是整個系統(tǒng)備份方案的圖示。


在您進行之前,先解一下,系統(tǒng)中那些是要備份的,那些是不需要的。



--------------------------------------------------------------------------------

新的backup
#!/bin/sh
HOSTNAME=`hostname`
DIRS="/etc/var/your_important_directory"
BACKUP="/tmp/$HOSTNAME.tgz"
NFS="/mnt/nfs"

tar-c$DIRS|gzip-9>$BACKUP
mv-f$BACKUP$NFS



--------------------------------------------------------------------------------

備份主機內(nèi)的Script:collect_backup
#!/bin/sh
NFS="/mnt/nfs"
BACKUP="/backup"

mv-f$NFS/*.tgz$BACKUP


在此,您不能夠?qū)⑺袀浞荻贾苯臃旁?mnt/nfs,這是危險的。萬一任一臺機器不小心將/mnt/nfs所有內(nèi)容刪除,那麼備份就會消失。因此,您需要將/mnt/nfs移到一個只有該備份主機可存取的目錄中。



--------------------------------------------------------------------------------

當這些個別的Script都測試好以後,接下來我們將他們放到crontab里面。找到您的crontab,它的位置可能在/var/spool/cron/crontabs/root、/etc/crontab、/var/cron/tabs/root。
在crontab中選擇以下之一加入(看您定期的時間):

Slackware:/var/spool/cron/crontabs/root
01****/full_backup_script_path/backup1>/dev/null2>/dev/null#每小時(太過火一點)
3016***/full_backup_script_path/backup1>/dev/null2>/dev/null#每日16:30,下班前備份
3016**0/full_backup_script_path/backup1>/dev/null2>/dev/null#每周一16:30
051**/full_backup_script_path/backup1>/dev/null2>/dev/null#每月一號5:0
RedHat/Debian:/etc/crontab
RedHat可直接將backup放入/etc/cron.hourly,/etc/cron.daily,/etc/cron.weekly,/etc/cron.monthly。或采用如上加入/etc/crontab的方式:
有關(guān)crontab的用法,可查"man5crontab",在此不詳述。

備份主機的設(shè)定類同。

注意:所有機器不要同時進行備份,否則網(wǎng)路會大塞車。備份主機收取備份的時間要設(shè)為最後,否則會收不到備份資料。您可以在實作後,將時間間隔調(diào)整一下。



--------------------------------------------------------------------------------

看看,兩個小小不到三行的ShellScript,配合cron這個定時工具。可以讓原本需要耗時多個小時的人工備份工作,簡化到不到十分鐘。善用您的想像力,多加一點變化,可你讓您的生活變得輕松異常,快樂悠哉。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 平和县| 日土县| 雷波县| 五大连池市| 都昌县| 昌宁县| 德格县| 渭源县| 吴江市| 苍溪县| 墨江| 上虞市| 舞阳县| 天气| 山阳县| 西乌珠穆沁旗| 大同县| 武城县| 含山县| 迁西县| 肥城市| 北辰区| 徐闻县| 七台河市| 东乡县| 荔波县| 裕民县| 香格里拉县| 通许县| 香港 | 新乡市| 安义县| 晋江市| 永寿县| 正阳县| 临邑县| 罗定市| 会宁县| 都昌县| 湖州市| 政和县|