我们在工作中,常常要备份一些资料,虽然事情不复杂,但是很费时间的,我在这里分享一个 Linux 备份脚本,轻松自如的实现自动备份,并且可以保留N天备份的档案。这个脚本分为两个文件,一个是执行文件web-backup.sh,另一个是备份项目文件project.lst。

#backup.sh
-- 重要变量名  作用
LogFile 日志文件
SourceDir 需要备份的目录
BakDir 备份至此目录
RetainDay 备份档案文件保留天数
ProjectLst 备份项目文件配置文件

代码:


#!/bin/bash

##########################################

# This is a free GNU GPL version 1.0 or abover

# Copyright (C)

# web_backup 

##########################################

LogFile=/backup/log/`date +"%Y-%m"`.log

DATE=`date +"%Y-%m-%d"`

SourceDir=/www/web/

BakDir=/backup/web/

RetainDay=10

ProjectLst=/backup/web-project.lst

###########################################

echo "backup start at $(date +"%Y-%m-%d_%H:%M:%S")" >$LogFile

echo "--------------------------------------" >>$LogFile

cd $BakDir

PROJECTLIST=`cat $ProjectLst`

for Project in $PROJECTLIST

do 

ProjectData=$SourceDir/$Project

DestDir=$BakDir/$Project

PackFile=$DATE.$Project.tgz

if [ -f $BakDir/$PackFile  ]

then 

echo "backup file have exist! " >>$LogFile

else 

cp -RHpf $ProjectData $DestDir >/dev/null

tar -zcvf $PackFile $Project > /dev/null

echo "backup $Project done into $PackFile ">>$LogFile

rm -rf $Project

fi


OldFile="$BakDir/"$(date --date="$RetainDay days ago" +"%Y-%m-%d").$Project.tgz

if [ -f %OldFile ]

then

rm -f $OldFile >/dev/null

echo "[$OldFile],Delete Old File Success!" >>$LogFile

fi

echo " " >>$LogFile

done

echo "-----------------------------------------" >>$LogFile

echo " " >>$LogFile

exit 0


# web-project.lst :  这个文件比较好理解,就是一个text文件,它的每一行表示一个项目,也就是你需要备份的目录下面的文件或目录。

onu_arm
onu_voip
onu_wifi
5xxx
7xxx
8xxx
nms