linux 增量备份文件,[转载]linux 文件增量备份  用tar实现

#!/bin/bash

#好的做法

#根据项目不同来重命名该脚本

#例如 amountebak.sh or pandawillsbak.sh

#该脚本最好放在 $bakpp定义的绝对路径部分

#你可以在$bakpp下找到相应的备份文件

#例如 /usr/backup/amountebak.sh or

/usr/backup/pandawillsbak.sh

########## Init Path ########

# 在下面的参数中必须定义的参数有 $bakpp、$project、$projectpp

TAR=/bin/tar

# 存放备份文件的地方,以项目名称区分

bakpp=/usr/backup/"$project"

# 需要备份的文件夹,文件夹的路径

project=test

projectpp=/home/mmroot/zbb/

# parament for varible

ym=`date +%Y%m`

ymd=`date +%Y%m%d`

# 存储备份文件的子目录,以月份区分,他的上级目录是$bakpp定义的

monthbakpp=$bakpp/$ym

gidpp=$monthbakpp

gidshot=gid$project$ym

# 完全备份的文件名

fullname=$ym

# 增量备份的文件名

incrementalname=$ymd

# Record the location of the log

log=$bakpp/$project.log

############ chk_full #######################

# 检查完全备份是否存在,如果不存在就创建它

#this function check fullbackup file exist or not , if not then

create fullbackup now

chk_full()

{

if [ -e "$monthbakpp"/"$project"_"$ym"_full.tar.gz ];then

echo ""$project"_"$ym"_full.tar.gz file exist!! ====`date

+%Y-%m-%d-%T` " >>$log

else

tar_full

fi

}

######### chk_incremental ########

# 检查增量备份是否存在

chk_incremental()

{

while [ -e

"$monthbakpp"/"$project"_"$incrementalname"_incremental.tar.gz

]

do

incrementalname=`echo "$incrementalname + 0.1" | bc `

done

}

######## tar_incremental #######

# 执行增量备份

tar_incremental()

{

cd $projectpp

echo "BEIGIN_TIME=====`date +%Y-%m-%d-%T` ==== CREATE

"$project"_"$incrementalname"_incremental.tar.gz"

>> $log

sleep 3

$TAR -g $gidpp/$gidshot -zcf

$monthbakpp/"$project"_"$incrementalname"_incremental.tar.gz

$project

echo "END_TIME========`date +%Y-%m-%d-%T` ==== CREATE

"$project"_"$incrementalname"_incremental.tar.gz"

>> $log

}

######## tar_full ###########

tar_full()

{

touch $gidpp/$gidshot

cd $projectpp

echo "BEIGIN_TIME=====`date +%Y-%m-%d-%T` ==== CREATE

"$project"_"$fullname"_full.tar.gz"

>> $log

$TAR -g $gidpp/$gidshot -zcf

$monthbakpp/"$project"_"$fullname"_full.tar.gz $project

echo "END_TIME========`date +%Y-%m-%d-%T` ==== CREATE

"$project"_"$fullname"_full.tar.gz"

>> $log

}

########### backup ##############################

# 总体调用备份,此时会做相应的检查以确保备份前提准备充分

backup()

{

if [ -d $monthbakpp ]; then

chk_full

chk_incremental

tar_incremental

else

mkdir -p $bakpp/$ym

tar_full

fi

}

########### let's begin #############

# 先检查$bakpp是否存在,如果不存在先创建后备份

if [ -d $bakpp ];then

backup

else

mkdir -p $bakpp

backup

fi

#advice you can create a file for put backup file, eg

/usr/cctcc

#crontab

#mini hours day month week command

# */5 * * * * /home/mmroot/zbb/aaa.sh

# 0 1 */1 * * /home/mmroot/zbb/aaa.sh

# tar -ztf test.tar.gz 查看备份文件里面的文件

有关crontab的用法请参阅:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值