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

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

image.png


在 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

相关文章
|
6月前
|
存储 人工智能 运维
别再靠脚本“救火”了!让智能数据治理接管你的运维世界
别再靠脚本“救火”了!让智能数据治理接管你的运维世界
336 14
|
7月前
|
Ubuntu Linux Anolis
Linux系统禁用swap
本文介绍了在新版本Linux系统(如Ubuntu 20.04+、CentOS Stream、openEuler等)中禁用swap的两种方法。传统通过注释/etc/fstab中swap行的方式已失效,现需使用systemd管理swap.target服务或在/etc/fstab中添加noauto参数实现禁用。方法1通过屏蔽swap.target适用于新版系统,方法2通过修改fstab挂载选项更通用,兼容所有系统。
639 3
Linux系统禁用swap
|
7月前
|
Linux
Linux系统修改网卡名为eth0、eth1
在Linux系统中,可通过修改GRUB配置和创建Udev规则或使用systemd链接文件,将网卡名改为`eth0`、`eth1`等传统命名方式,适用于多种发行版并支持多网卡配置。
1179 3
|
7月前
|
数据采集 运维 数据可视化
AR 运维系统与 MES、EMA、IoT 系统的融合架构与实践
AR运维系统融合IoT、EMA、MES数据,构建“感知-分析-决策-执行”闭环。通过AR终端实现设备数据可视化,实时呈现温度、工单等信息,提升运维效率与生产可靠性。(238字)
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
731 3
Linux系统初始化脚本
|
7月前
|
安全 Linux Shell
Linux系统提权方式全面总结:从基础到高级攻防技术
本文全面总结Linux系统提权技术,涵盖权限体系、配置错误、漏洞利用、密码攻击等方法,帮助安全研究人员掌握攻防技术,提升系统防护能力。
876 1
|
7月前
|
监控 安全 Linux
Linux系统提权之计划任务(Cron Jobs)提权
在Linux系统中,计划任务(Cron Jobs)常用于定时执行脚本或命令。若配置不当,攻击者可利用其提权至root权限。常见漏洞包括可写的Cron脚本、目录、通配符注入及PATH变量劫持。攻击者通过修改脚本、创建恶意任务或注入命令实现提权。系统管理员应遵循最小权限原则、使用绝对路径、避免通配符、设置安全PATH并定期审计,以防范此类攻击。
1255 1
|
关系型数据库 应用服务中间件 Python
Linux运维工程师面试题全面汇总(2023)
Linux运维工程师面试题全面汇总(2023)
1978 0
|
存储 运维 Linux
Linux运维工程师面试题(7)
Linux运维工程师面试题(7)1 常用的 ansible 模块有哪些2 说一下 ansible 使用 roles 编排的目录结构3 docker 六大命名空间 namespace4 cgroups 的作用5 runc 的作用6 docker 常用的命令7 docker 存储引擎有哪些,区别是什么8 进入 docker 容器有几种方法,区别是什么9 Dockerfile 常用指令10 容器数据持久保存方式
311 1
|
SQL 关系型数据库 MySQL
Linux运维工程师面试题(6)
Linux运维工程师面试题(6)1 数据库事务的四个特性及含义2 mysql 的 sql 语句怎么优化3 varchar 与 char 的区别是什么?大小限制?utf8 字符集下 varchar 最多能存多少个字符?4 索引有什么用?5 sql 注入是怎么产生的,如何防止?6 csrf 是什么?如何防范?7 如何加强 MySQL 安全,请给出可行的具体措施?8 如是数据库慢导致网站打开慢,如何排查并解决?9 MySQL 有多少种日志10 MySQL 数据库 cpu 飙升到500%的话他怎么处理?
321 1
下一篇
开通oss服务