从 Wow! Ubuntu / Ubuntu 新闻、技巧、软件及游戏! 作者:ITwhy
我们在网维工作中,常常要备份一些资料,虽然事情不复杂,但是很费时间的,我在这里分享一个 Linux 备份脚本,轻松自如的实现自动备份,并且可以保留N天备份的档案。这个脚本分为两个文件,一个是执行文件backup.sh,另一个是备份项目文件 project.lst。
#backup.sh
-- 重要变量名 作用
LogFile 日志文件
SourceDir 需要备份的目录
BakDir 备份至此目录
RetainDay 备份档案文件保留天数
ProjectLst 备份项目文件配置文件
代码:
01#!/bin/bash
02#author: InBi
03#date: 2011-07-28
04#role: backup files periodically.
05#website: http://www.itwhy.org/2011/07-28/707.html
06##################################################
07LogFile=/backup/log/`date+"%Y-%m"`.log
08DATE=`date+"%Y-%m-%d"`
09SourceDir=/var/RDfile
10BakDir=/backup
11RetainDay=20
12ProjectLst=/backup/project.lst
13##################################################
14echo"backup start at $(date +"%Y-%m-%d %H:%M:%S")"> $LogFile
15echo"--------------------------------------------------">> $LogFile
16cd$BakDir
17PROJECTLIST=`cat$ProjectLst`
18forProject in$PROJECTLIST
19do
20ProjectData=$SourceDir/$Project
21DestDir=$BakDir/$Project
22PackFile=$DATE.$Project.tgz
23if[ -f $BakDir/$PackFile ]
24then
25echo"backup file have exist !">>$LogFile
26else
27cp-RHpf $ProjectData $DestDir > /dev/null
28tar-zcvf $PackFile $Project > /dev/null
29echo"backup $Project done into $PackFile ">>$LogFile
30rm-rf $Project
31fi
32OldFile="$BakDir/"$(date--date="$RetainDay days ago"+"%Y-%m-%d").$Project.tgz
33if[ -f $OldFile ]
34then
35rm-f $OldFile > /dev/null
36echo"[$OldFile],Delete Old File Success!">> $LogFile
37fi
38echo" ">> $LogFile
39done
40echo"--------------------------------------------------">> $LogFile
41echo"backup end at $(date +"%Y-%m-%d %H:%M:%S")">> $LogFile
42echo" ">> $LogFile
43exit0
# project.lst : 这个文件比较好理解,就是一个text文件,它的每一行表示一个项目,也就是你需要备份的目录下面的文件或目录。
onu_arm
onu_voip
onu_wifi
5xxx
7xxx
8xxx
nms