shell实现目录增量备份的示例代码

 更新时间:2024年08月28日 10:37:28   作者:小黑要上天  
本文主要介绍了shell实现目录增量备份的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

auto_backup_system.sh 

#针对目录进行备份;每周1-6执行增量备份,每周日(值为:0 or 7)执行全备份

#!/bin/bash
#Automatic Backup Linux System Files
#By Author xiaoheiyaoshangtian
#2024/x/x

source_dir=($*)
target_dir=/tmp
year=$(date +%Y)
month=$(date +%m)
day=$(date +%d)
week=$(date +%u)
files=system_backup.tar.gz
code=$?

if [ -z $source_dir ];then
  echo -e "Please Enter File or Directory You Need to Backup:\n--------------------------------------------------\nExample    $0 /boot /etc ......"
  exit
fi

#determin whether the target directory exists
if [ ! -d $target_dir/$year/$month/$day ];then
  mkdir -p $target_dir/$year/$month/$day
  echo "This $target_dir/$year/$month/$day created successfully!"
fi

#exec full backup function command
full_backup()
{
  if [ "$week" -eq "0" ];then
    rm -rf $target_dir/snapshot
    cd $target_dir/$year/$month/$day
    tar -g $target_dir/snapshot -czvPf $files $(echo ${source_dir[@]})
    [ "$code" == "0" ]&&echo -e "---------------------------------------\nfull_backup system files backup successfully!"
  fi
}

#perform incremental backup function command
add_backup()
{
  cd $target_dir/$year/$month/$day
  if [ -f $target_dir/$year/$month/$day/$files ];then
    read -p "$files already exists,overwrite confirmation yes or no(default yes)?:" sure
    if [ "$sure" == "no" -o "$sure" == "n" -o "$sure" == "N" -o "$sure" == "NO" -o "$sure" ==  "No" ];then
      sleep 1
      exit 0
    fi
    if [ $week -ne "0" ];then
    cd $target_dir/$year/$month/$day
    tar -g $target_dir/snapshot -czvPf $$_$files $(echo ${source_dir[@]})
    [ "$code" == "0" ]&&echo -e "---------------------------------------\nadd_backup system files backup successfully!"
    fi
  else
    if [ $week -ne "0" ];then
    cd $target_dir/$year/$month/$day
    tar -g $target_dir/snapshot -czvPf $files $(echo ${source_dir[@]})
    [ "$code" == "0" ]&&echo -e "---------------------------------------\nadd_backup system files backup successfully!"
    fi
  fi 
}

full_backup
add_backup

验证:

[root@logstash ~]# sh auto_backup_system.sh
Please Enter File or Directory You Need to Backup:
--------------------------------------------------
Example    auto_backup_system.sh /boot /etc ......
[root@logstash ~]# 
[root@logstash ~]# sh auto_backup_system.sh /tmp
This /tmp/2024/06/21 created successfully!
tar: /tmp: Directory is new
tar: /tmp/.ICE-unix: Directory is new
tar: /tmp/.Test-unix: Directory is new
tar: /tmp/.X11-unix: Directory is new
tar: /tmp/.XIM-unix: Directory is new
tar: /tmp/.font-unix: Directory is new
tar: /tmp/2024: Directory is new
tar: /tmp/2024/06: Directory is new
tar: /tmp/2024/06/21: Directory is new
/tmp/
/tmp/.ICE-unix/
/tmp/.Test-unix/
/tmp/.X11-unix/
/tmp/.XIM-unix/
/tmp/.font-unix/
/tmp/2024/
/tmp/2024/06/
/tmp/2024/06/21/
/tmp/snapshot
/tmp/2024/06/21/system_backup.tar.gz
---------------------------------------
add_backup system files backup successfully!
[root@logstash ~]# 
[root@logstash ~]# sh auto_backup_system.sh /tmp
system_backup.tar.gz already exists,overwrite confirmation yes or no(default yes)?:no
[root@logstash ~]# 
[root@logstash ~]# sh auto_backup_system.sh /tmp
system_backup.tar.gz already exists,overwrite confirmation yes or no(default yes)?:
/tmp/
/tmp/.ICE-unix/
/tmp/.Test-unix/
/tmp/.X11-unix/
/tmp/.XIM-unix/
/tmp/.font-unix/
/tmp/2024/
/tmp/2024/06/
/tmp/2024/06/21/
/tmp/2024/06/21/2577_system_backup.tar.gz
---------------------------------------
add_backup system files backup successfully!
[root@logstash ~]# 
[root@logstash tmp]# ls
2024  snapshot
[root@logstash tmp]# 
[root@logstash tmp]# cd 2024/
[root@logstash 2024]# cd 06/21/
[root@logstash 21]# ls
2577_system_backup.tar.gz  system_backup.tar.gz
[root@logstash 21]# 

到此这篇关于shell实现目录增量备份的示例代码的文章就介绍到这了,更多相关shell 目录增量备份内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Linux shell传递参数实现原理及代码实例

    Linux shell传递参数实现原理及代码实例

    这篇文章主要介绍了Linux shell传递参数实现原理及代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Linux系统links和elinks命令的基本使用教程

    Linux系统links和elinks命令的基本使用教程

    links和elinks都是Linux系统下的命令行浏览器,主要用于在终端中查看网页内容,这篇文章主要介绍了Linux系统之links和elinks命令的基本使用,需要的朋友可以参考下
    2023-09-09
  • linux文本处理工具及正则表达式集锦

    linux文本处理工具及正则表达式集锦

    这篇文章主要介绍了linux文本处理工具及正则表达式集锦,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-05-05
  • 复制 Windows cmd 窗口命令行的信息方法

    复制 Windows cmd 窗口命令行的信息方法

    下面小编就为大家带来一篇复制 Windows cmd 窗口命令行的信息方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • 使用netcat(瑞士军刀)进行文件传输

    使用netcat(瑞士军刀)进行文件传输

    netcat是开源世界的经典应用之一,被称为网络瑞士军刀。几乎所有的发行版都会带这个小程序,用它可以在任意两台有网络链接的机器上传输文件, 下面我们就来简单看下他的使用方法吧。
    2016-01-01
  • telnet 命令使用方法大全

    telnet 命令使用方法大全

    这篇文章主要介绍了telnet 命令使用方法大全,本文给大家介绍的非常想详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 详解Sed命令的用法与正则表达式元字符

    详解Sed命令的用法与正则表达式元字符

    sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,功能不同凡响。这篇文章主要介绍了Sed命令使用与正则表达式元字符,需要的朋友可以参考下
    2017-12-12
  • 基于shell脚本中cd命令无效的解决方法

    基于shell脚本中cd命令无效的解决方法

    今天小编就为大家分享一篇基于shell脚本中cd命令无效的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Linux下服务器重启的脚本命令

    Linux下服务器重启的脚本命令

    Linux关闭和重启系统一般使用相同的命令可以实现。下面脚本之家小编给大家带来了Linux下服务器重启的脚本命令,感兴趣的朋友一起看看吧
    2017-09-09
  • shell脚本declare命令的用法详解(声明变量的属性和类型)

    shell脚本declare命令的用法详解(声明变量的属性和类型)

    这篇文章主要介绍了shell脚本declare命令用法(声明变量的属性和类型,declare 命令在一般的脚本编写中并不常用,大多数情况下直接使用简单的变量赋值语句即可满足需求,需要的朋友可以参考下
    2023-06-06

最新评论