#!/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的用法请参阅:

遗留问题

1,查看磁盘空间

2,还原方法

3,删除上个月的备份

参考文档:

郑彬:

2009-04-19 16:40:15

这个增量备份有个缺点:删除一个文件或文件夹,增量备份不会做任何记录。所以说你将来恢复的话删除过的文件会被恢复出来!!

谁有解决这个问题的办法吗?

思路:标识文件的几种状态:创建、修改、删除、已备份、未备份盖茨:

2009-05-15 14:51:05

find /bak/*.tar.gz -mtime 30 -exec rm -f {} \;

关于删除请参阅

1,过滤出大小为0的文件

# ll |awk '{print $5,$8}' |grep ^0 |awk '{print $2}'

或者

# find ./ -size 0

2,过滤出大小为0的文件,并将它们删除

# ll |awk '{print $5,$8}' |grep ^0 |awk '{print $2}' |xargs rm -rf

或者

# find ./ -size 0 | xargs rm -f

或者

# find ./ -size 0 -exec rm -f {} \;

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

重点理解 exec参数和 xargs参数

-exec rm {} \; 相当于 rm -f 文件名1 文件名2 文件名3 (只调用了一次rm命令)

xargs rm -f 相当于 rm -f 文件名1; rm -f 文件名2; rm -f 文件名3 (调用了三次rm命令,这样效率更高)

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

# find /root/zbb/ -mtime +4<==四天前修改过的文件# find /root/zbb/ -mtime -4<==四天之内修改过的文件

linux文件增量备份,linux 文件增量备份 用tar实现相关推荐

  1. Python实现目录文件的全量和增量备份

    目标: 1.传入3个参数:源文件路径,目标文件路径,md5文件 2.每周一实现全量备份,其余时间增量备份 1.通过传入的路径,获取该路径下面的所有目录和文件(递归) 方法一:使用os.listdir ...

  2. 群晖linux文件夹颜色红色,技术干货分享 | 群晖备份Linux文件夹~

    以下协议可用作备份源,以使用Active Backup forServer将文件备份到您的Synology NAS: oSMB(Microsoft Windows) orsync 3.0或更高版本(L ...

  3. 服务器文件增量备份,服务器文件增量备份

    服务器文件增量备份 内容精选 换一换 云服务器备份(CSBS,Cloud Server Backup Service)提供对弹性云服务器(Elastic Cloud Server)和裸金属服务器(Ba ...

  4. linux 怎么增量备份,Linux系统的完全备份和增量备份

    Linux, 完全备份, 增量备份 1.完全备份 tar -g snapshot -zcvf backup.tar --directory / --exclude=mnt --exclude=misc ...

  5. python 读取文件夹 增量文件_Python实现目录文件的全量和增量备份

    目标: 1.传入3个参数:源文件路径,目标文件路径,md5文件 2.每周一实现全量备份,其余时间增量备份 1.通过传入的路径,获取该路径下面的所有目录和文件(递归) 方法一:使用os.listdir ...

  6. Linux 平台下 RMAN 全备 和 增量备份 shell 脚本

    一. 一些准备知识 Oracle 分归档和非归档模式. 这两者的区别就是对redo log的处理.归档模式下,当一个redo log 写满之后,就会把这个redo log里的内容写入归档文件,等写完之 ...

  7. linux新建备份数据库的脚本文件,Linux下shell脚本:自动每日备份网站文件和数据库上传FTP空间...

    前言 服务器.vps,难免会遇到各种问题,丢失数据,则必然痛心疾首啊!!! 数据无价,so建议养成定期备份的习惯!而且,要多备份几份,本地.网盘.FTP空间等,都多保存几份! 这里,就为大家带来一个l ...

  8. linux怎么还原bak文件,Linux restore命令:还原dump操作备份下的文件、目录或分区...

    restore 命令是 dump 命令的配套命令,dump 命令是用来备份分区和数据的,而 restore 命令是用来恢复数据的. restore 命令的基本格式如下: [root@localhost ...

  9. 使用mondo制作备份linux的iso文件

    因为项目部署的需要将数据库,tomcat等服务部署到Linux系统中,后面为了方便产品化便于部署所以将整个Linux系统打包成iso文件,给客户进行部署的时候直接进行Linux系统的安装,这样就不用考 ...

最新文章

  1. 运维开发笔记整理-前后端分离
  2. 商品规格可选怎么设计_商品模块数据库表解析(一)
  3. jdk 8 集合对象排序_使用JDK 8流在包装对象的集合和包装对象的集合之间转换
  4. Java类类getResourceAsStream()方法及示例
  5. 华为Mate30系列5G版正式开售:有了5G套餐 入手正当时
  6. linux安装7z到指定目录,linux下安装7zip
  7. 戴尔创业节丨高效编程利器Vostro低至2099!双11提前享!
  8. 数字信号中的上采样和下采样
  9. Feign出现The bean ‘seckill.FeignClientSpecification‘, defined in null, could not be registered. A be
  10. Python Module — OpenAI ChatGPT API
  11. 实验07 PHP互动网页
  12. 早年黑网吧特供游戏《血战上海滩》如何在Win10运行?
  13. 工业机器人市场需求 将推动建材市场发展
  14. Microsoft OLE DB Provider for ODBC Drivers (0x80004005) 操作必须使用一个可更新的查询”错误的解决办法
  15. 【LoadingDialog】标准款待加载对话框
  16. 淘宝TOP开发:(二)
  17. PowerDVD20中文版|CyberLink PowerDVD Ultra 20中文版 v20.0.2101.62
  18. 华为交换机 查ip冲突_交换机如何设置控制IP地址冲突故障
  19. 初学NLP的相关概念
  20. 流程图符号及流程图的例子

热门文章

  1. SP91 未知唤醒源日志
  2. win10 病毒实时防护 关闭
  3. B站黑马程序员Oracle学习——项目案例:送水公司收费系统
  4. css绝对定位之对齐居中版心内容
  5. 德语翻译公司的前景及翻译公司推荐
  6. 回归分析预测技术介绍
  7. P8_路径规划_udacity无人驾驶
  8. 精品软件 推荐 虚拟光驱工具 DAEMON Tools
  9. 腾讯的断舍离:弃“企鹅”,保“虎斗”
  10. 生产BOM、销售BOM、标准BOM的区别