作者: 薄荷冰           Linux基础  |  网站架构  |  数据库  |  监控报警  |  shell系列  |  常用工具  |  常见问题


 

导航

 
#!/bin/bash
############################################################
# $Name:         create_backup_cron_script.lib
# $Version:      v1.0
# $Functions:
#                1 function_create_server_rsync_bak_script "${cron_scripts}" "${backup_dir}" "${localpath_watch}"
#                2 function_create_client_rsync_bak_script "${cron_scripts}" "${backup_dir}" "${localpath_watch}" \
#                  "${passwordfile}" "${module_backup}" 'store-rsync-01'
# $Author:       Jeson Li
# $organization: www.lzbbg.cn
# $Create Date:  2017-03-10
# $Mail:         libobin@tom.com


# $Description:  Linux create cron backup script
############################################################
function_create_server_rsync_bak_script(){
    cron_scripts="${1:-/server/cron_scripts}"
    backup_dir="$2"
    nfs_data="$3"
cat >$cron_scripts/server_rsync_bak.sh<<-EOF
#!/bin/bash
############################################################
# \$Name:         server_rsync_bak.sh
# \$Version:      v1.0
# \$Functions:
# \$Author:       Jeson Li
# \$organization: www.lzbbg.cn
# \$Create Date:  2017-03-10
# \$Mail:         libobin@tom.com
# \$Description:  Use Linux backup_server backup data and mail to user script \
#                 and Receive from client backup data
############################################################
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
Local_IP="\$(ip addr show eth0|awk -F"[ \t/]*" '\$2~"^inet\$"{print \$3}'|head -1)"
Time=\$(date +%F_%w)
backup_dir="${backup_dir}"
web_dir='/webCodes'
nfs_data="${nfs_data}"
buckup_log='buckup.log'
mail_addr='1270963692@qq.com'
echo "\n\$(date)\n" >>\${backup_dir}\${buckup_log}
mkdir -p \${backup_dir}\${Local_IP} && cd \${backup_dir}\${Local_IP} \
&& tar -czhf \${Time}_tar.gz \${nfs_data} \${web_dir} /var/spool/cron /etc/{sudoers,mail.rc,rc.d/rc.local,hosts,sysctl.conf,ssh/sshd_config} &>/dev/null
[ -s \${Time}_tar.gz ] && md5sum \${Time}_tar.gz >\${Time}_tar.gz.md5 \
&& sleep 600 \
&& find \${backup_dir} -maxdepth 2 -mtime +3 -name "*-*-*_*" ! -name "*-*-*_6_*" |xargs rm -fr
for second_dir_path in \$(ls -d \${backup_dir}/[0-9]??.*/)
do
    for three_dir_path in \$(ls -d \${second_dir_path}*\${Time}/)
    do
        cd \$three_dir_path
        for md5_file in \$(ls *.md5)
        do
            md5sum -c \${md5_file} &>/dev/null
            if [ \$? -eq 0 ];then
                echo -e "Backup  [ \$three_dir_path\${md5_file} ]  [ OK ]" >>\${backup_dir}\${buckup_log}
            else
                echo -e "Backup  [ \$three_dir_path\${md5_file} ] .......... [ false ]" >>\${backup_dir}\${buckup_log}
            fi
        done
    done
        cd \$second_dir_path
        md5sum -c \${Time}_tar.gz.md5 &>/dev/null
        if [ \$? -eq 0 ];then
            echo -e "Backup  [ \$second_dir_path\${Time}_tar.gz ]  [ OK ]" >>\${backup_dir}\${buckup_log}
        else
            echo -e "Backup  [ \$second_dir_path\${Time}_tar.gz ] .......... [ false ]" >>\${backup_dir}\${buckup_log}
        fi
done
mail -s "IN \$(hostname) check backup messages " \${mail_addr}<\${backup_dir}\${buckup_log}
[ \$(grep -c '' \${backup_dir}\${buckup_log}) -gt 150 ] && sed -i '1,50d' \${backup_dir}\${buckup_log}
EOF
    chmod +x $cron_scripts/*.sh
    echo -e "# Backup_Server backup created $(date +%F) for $(whoami)\n00 00 * * * $cron_scripts/server_rsync_bak.sh &>/dev/null\n" >>/var/spool/cron/$(whoami)
 }

function_create_client_rsync_bak_script(){
    cron_scripts="$1"
    backup_dir="$2"
    nfs_data="$3"
    passwordfile="$4"
    module_backup="$5"
    Backup_server_host_name="$6"
cat >$cron_scripts/client_rsync_bak.sh<<-EOF
#!/bin/bash
############################################################
# \$Name:         client_rsync_bak.sh
# \$Version:      v1.0
# \$Functions:
# \$Author:       Jeson Li
# \$organization: www.lzbbg.cn
# \$Create Date:  2017-03-10
# \$Mail:         libobin@tom.com
# \$Description:  Use Linux client_server backup and rsync backup_data to backup_server
############################################################
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
Local_IP="\$(ip addr show eth0|awk -F"[ \t/]*" '\$2~"^inet\$"{print \$3}'|head -1)"
Time=\$(date +%F_%w)
Backup_server_host_name="${Backup_server_host_name}"
backup_dir="${backup_dir}"
web_dir='/webCodes'
nfs_data="${nfs_data}"
passwordfile="${passwordfile}"
module_backup="${module_backup}"

mkdir -p \${backup_dir}\${Local_IP} && cd \${backup_dir}\${Local_IP} \
&& tar -czhf \${Time}_tar.gz \${nfs_data} \${web_dir} /var/spool/cron /etc/{sudoers,mail.rc,rc.d/rc.local,hosts,sysctl.conf,ssh/sshd_config} &>/dev/null
[ -s \${Time}_tar.gz ] && md5sum \${Time}_tar.gz >\${Time}_tar.gz.md5 \
&& rsync -rz --password-file=\${passwordfile} \${backup_dir} rsync_backup@\${Backup_server_host_name}::\${module_backup} \
&& find \${backup_dir} -maxdepth 2 -mtime +2 -name "*-*-*_*" |xargs rm -fr
EOF
    chmod +x $cron_scripts/*.sh
    echo -e "# Clinte backup created $(date +%F) for $(whoami)\n00 00 * * * $cron_scripts/client_rsync_bak.sh &>/dev/null\n" >>/var/spool/cron/$(whoami)
}

 

posted on 2018-12-27 20:23  薄荷冰  阅读(117)  评论(0)    收藏  举报