运维工程师都知道,全备和增量备份 Linux 系统脚本编写

简介: 本篇内容记录了全备和增量备份 Linux 系统脚本编写。

在 Linux 中,我们经常需要备份系统重要文件,例如 /etc 、/boot 分区、重要网站数据等等,如果每天都完整备份的话,会占用很大的空间,那我们改如何来备份呢?每周日进行完整备份,其余每天为增量备份。


全备份:直接备份一个整体


增量备份:在全备份的基础上再次备份


全备份实例


把整个目录备份下来


[root@a shell]# tar -g /tmp/system_data -czvf /tmp/system_bak.tar.gz /shell
tar: /shell: Directory is new
tar: Removing leading `/' from member names
/shell/
/shell/.auto.sh.swp
/shell/a.txt
/shell/awkprof.out
/shell/b.txt
[root@a tmp]# ls
system_bak.tar.gz  system_data
[root@a tmp]# tar xzf system_bak.tar.gz 
[root@a tmp]# ls shell
a.txt  awkprof.out  b.txt


增量备份


只备份新添加的目录


[root@a shell]# touch qqq.txt
[root@a shell]# mkdir aaaa
/shell/aaaa: Directory is new
tar: Removing leading `/' from member names
/shell/
/shell/aaaa/
/shell/qqq.txt
[root@a shell]# cd /tmp
[root@a tmp]# ls
system_add_data.tar.gz  system_bak.tar.gz  system_data
[root@a tmp]# tar xzf system_add_data.tar.gz 
[root@a tmp]# mv shell/ shell_add_bak
[root@a tmp]# ls shell_add_bak/
aaaa  qqq.txt


每周日进行完整备份,其余每天为增量备份。


这个功能我们怎么在shell脚本中实现呢?


[root@a shell]# cat a.sh 
#! /bin/bash
# 20200525
# by caq
# fighting
backdir=$*
targetdir=/date/backup
year=`date +%Y`
month=`date +%m`
day=`date +%d`
week=`date +%u`
sysfiles=system_backup.tgz
addfiles=addsystem_backup.tgz
if [ -z "$*" ];then 
    echo "please your parameter[backdir{/etc|/boot|..}]"
    exit 
fi
if [ ! -d $targetdir/$year/$month/$day ];then
  mkdir -p $targetdir/$year/$month/$day
fi
full_back()
{
  if [ $week -eq 7 ];then
    cd $targetdir/$year/$month/$day;
    tar -g $targetdir/snapshot -czvf $files $backdir
    if [ $? = 0 ];then
      echo "sysback successful!"
    fi
  fi  
}
add_back()
{
  if [ $week -ne 7 ];then
    cd $targetdir/$year/$month/$day;
    tar -g $targetdir/snapshot -czvf $addfiles $backdir
    if [ $? = 0 ];then
                  echo "addback successful!"
                fi
  fi 
}
full_back;add_back


进行测试
[root@a shell]# cd /date/backup/2020/05/23/
[root@a 23]# ls
addsystem_backup.tgz


相关文章
|
1月前
|
Linux
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
74 24
Linux系统之whereis命令的基本使用
|
26天前
|
Shell Linux
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
93 32
|
1月前
|
存储 Linux 网络安全
linux应急响应检查脚本
通过这个脚本,可以快速收集系统的关键信息,有助于在发生问题时进行及时的应急响应和分析。
98 34
|
3月前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
300 78
|
2月前
|
缓存 安全 Linux
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
159 23
|
3月前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
3月前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
103 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
3月前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
135 13
|
3月前
|
运维 Kubernetes Devops
自动化运维:从脚本到工具的演进之旅
在数字化浪潮中,自动化运维成为提升效率、保障系统稳定的关键。本文将探索自动化运维的发展脉络,从基础的Shell脚本编写到复杂的自动化工具应用,揭示这一技术变革如何重塑IT运维领域。我们将通过实际案例,展示自动化运维在简化工作流程、提高响应速度和降低人为错误中的重要作用。无论你是初学者还是资深专家,这篇文章都将为你提供宝贵的洞见和实用的技巧。
|
4月前
|
运维 Devops
自动化运维:从脚本到DevOps的进化之旅
在数字化时代,自动化运维不仅是提高生产效率的关键,更是企业竞争力的象征。本文将带领读者穿越自动化运维的发展历程,从最初的脚本编写到现代DevOps文化的形成,揭示这一演变如何重塑IT行业的工作模式。通过具体案例,我们将展示自动化工具和实践如何简化复杂任务,优化流程,并促进团队协作。你将发现,自动化运维不仅关乎技术的进步,更体现了人、流程和技术三者之间协同增效的深层逻辑。