Linux自动备份脚本

scadm 2021年4月25日00:49:47Linux自动备份脚本已关闭评论9951 1735字

要求:将/data目录下的所有文件cp到/var/backups目录下,文件以当天的日期命名。例如(/var/backups/data.20151103)。并且判断前一天的目录中的文件与当天的区别,如果无区别,则删除前一天的备份目录。

# cat auto_bak.sh
#!/bin/bash
bak_from_name="data"
bak_from_dir="/data"
bak_to_dir_par="/var/backups"
bak_dir="${bak_to_dir_par}${bak_from_dir}.$(date +%Y%m%d)"
yes_bak_dir="${bak_to_dir_par}${bak_from_dir}.$(date -d '-1 day' +%Y%m%d)"
new_sum_file="${bak_to_dir_par}/new_sum.$bak_from_name.$(date +%Y%m%d)"
old_sum_file="${bak_to_dir_par}/old_sum.$bak_from_name.md5"
if [ ! -d $bak_to_dir_par ];then
    mkdir $bak_to_dir_par
fi
find $bak_from_dir |xargs -I {} md5sum {} >> $new_sum_file 2>/dev/null
cp -a $bak_from_dir $bak_dir && echo "$bak_from_dir directory to $bak_dir directory backup successfully"
new_sum_error=`md5sum -c $new_sum_file 2>/dev/null|awk '$2!~"OK"'|wc -l`
new_sum_ok=`md5sum -c $new_sum_file 2>/dev/null|awk '$2~"OK"'|wc -l`
old_sum_error=`md5sum -c $old_sum_file 2>/dev/null|awk '$2!~"OK"'|wc -l`
old_sum_ok=`md5sum -c $old_sum_file 2>/dev/null|awk '$2~"OK"'|wc -l`
if [ $new_sum_error == $old_sum_error -a $new_sum_ok == $old_sum_ok ];then
    echo "Because today and yesterday's content is the same, delete the backup content of yesterday"
    rm -rf $yes_bak_dir $new_sum_file
fi
echo | cp $new_sum_file $old_sum_file &>/dev/null

变量描述:

bak_from_name:变量为所要备份的目录名

bak_from_dir:变量为所要备份的目录路径

bak_to_dir_par:变量为所要备份到的目录的父(上级)目录路径

bak_dir:变量为所要备份到的目录路径

yes_bak_dir:变量为所要备份目录前一天的备份目录路径

new_sum_file:变量为当天所计算出来的所要备份目录的MD5列表

old_sum_file:变量为当天所计算出来的所要备份目录的MD5列表(此变量的当天是脚本执行之后的当前,在脚本才开始执行的时候,该变量所指定的文件为前一天备份目录的MD5列表)

new_sum_error:变量为当天所要备份目录的MD5发生变化的条目总数

new_sum_ok:变量为当天所要备份目录的MD5未发生变化的条目总数

old_sum_error:变量为前一天所要备份目录的MD5发生变化的条目总数

old_sum_ok:变量为前一天所要备份目录的MD5未发生变化的条目总数

脚本描述:

脚本前一部分是搜寻所要备份目录的每一个文件的md5值,然后记录到当天的所要备份目录的MD5列表文件中,然后执行备份。

后一部分是根据比对当天的所要备份目录的MD5列表文件和前一天的所要备份目录的MD5列表文件中未变化和变化部分的条目值是否相同,来判断所要备份目录中的文件是否有发生变化,以此来决定是否删除前一天的备份。

继续阅读
scadm
  • 本文由 发表于 2021年4月25日00:49:47
  • 转载请务必保留本文链接:https://www.wscyun.com/1194
Hadoop 节点扩容 运维

Hadoop 节点扩容

配置好hosts解析 # cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdom...
hadoop 分布式存储部署 运维

hadoop 分布式存储部署

Hadoop概念 Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost...
CEPH分布式存储 运维

CEPH分布式存储

ceph简介: Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。ceph 的统一体现在可以提供文件系统、块存储和对象存储,分布式体现在可以动态扩展。在国内一些公司的云环境中...
docker容器部署 Docker

docker容器部署

查找镜像文件 # 在Docker官方仓库中搜索Nginx镜像,Nginx镜像文件中只包含Nginx软件程序、数据文件 # docker search nginx NAME DESCRIPTION ST...