返回顶部
首页 > 资讯 > 精选 >如何在Debian系统中使用backupninja定制备份计划
  • 938
分享到

如何在Debian系统中使用backupninja定制备份计划

2023-06-13 03:06:26 938人浏览 安东尼
摘要

这篇文章主要讲解了“如何在Debian系统中使用backupninja定制备份计划”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何在Debian系统中使用backupninja定制备份计划

这篇文章主要讲解了“如何在Debian系统中使用backupninja定制备份计划”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何在Debian系统中使用backupninja定制备份计划”吧!

回顾 backupninja

backupninja的一个独特的地方是它可以完全抛弃/etc/backup.d中的纯文本配置文件和操作文件,软件自己会搞定。另外,我们可以编写自定义脚本(又叫 “handler”)放在/usr/share/backupninja 目录下来完成不同类型的备份操作。此外,可以通过ninjahelper的基于ncurses的交互式菜单(又叫“helper”)来指导我们创建一些配置文件,使得人工错误降到最低。
创建定制的Handler与Helper

这一节的目标是创建一个脚本,将home目录以gzip或bzip2压缩包的形式备份起来,不包括音乐与视频文件。我们将这个文件命名为home,将它放在/usr/backup/ninja目录下。

尽管你可以使用默认的tar handler(参考 /usr/share/backupninja/tar 与 /usr/share/backupninja/tar.helper)来达到这个效果,但是我们使用这种方法来展示如何创建实用的 handler 脚本与基于 ncurses 的 helper。你可以根据你的需求来决定如何运用这里的方法。

由于 handlers 来源于主脚本,所以无需以#!/bin/bash开始的释伴行(shebang line)。

我们编写的 handler (/usr/share/backupninja/home)如下所示。已经详细注释了。getconf 函数用来读取备份操作的配置文件。如果你指定了一个变量的值,那么它会覆盖配置文件中对应变量的值:   

代码如下:

#/home 目录 handler 脚本
   # 每个备份文件会通过 FQDN 来鉴别主机
   getconf backupname
   # 备份文件的保存目录
   getconf backupdir
   # 默认压缩
   getconf compress
   # 包含 /home 目录
   getconf includes
   #不包含 *.mp3 与 *.mp4 文件
   getconf excludes
   # 要打包备份文件的默认扩展名
   getconf EXTENSioN
   # tar 程序的绝对路径
   getconf TAR `which tar`
   # date 程序的绝对路径
   getconf DATE    `which date`
   # 日期格式
   DATEFORMAT="%Y-%m-%d"
   # 如果备份目录不存在,以致命错误退出
   if [ ! -d "$backupdir" ]
   then
      mkdir -p "$backupdir" || fatal "Can not make directory $backupdir"
   fi
   # 如果备份目录不可写,同样以致命错误退出
   if [ ! -w "$backupdir" ]
   then
      fatal "Directory $backupdir is not writable"
   fi
   # 根据压缩格式选择对应的tar选项
   case $compress in
      "gzip")
       compress_option="-z"
       EXTENSION="tar.gz"
       ;;
      "bzip")
       compress_option="-j"
       EXTENSION="tar.bz2"
       ;;
      "none")
       compress_option=""
       ;;
      *)
       warning "Unknown compress filter ($tar_compress)"
       compress_option=""
       EXTENSION="tar.gz"
       ;;
   esac
   # 不包含一些文件类型/目录
   exclude_options=""
   for i in $excludes
   do
      exclude_options="$exclude_options --exclude $i"
   done
   # 调试信息,执行备份操作
   debug "Running backup: " $TAR -c -p -v $compress_option $exclude_options \
      -f "$backupdir/$backupname-"`$DATE "+$DATEFORMAT"`".$EXTENSION" \
      $includes
   # 将标准输出重定向到以.list为扩展的文件  
   # 将标准错误输出重定向到以.err为扩展的文件
   $TAR -c -p -v $compress_option $exclude_options \
      -f "$backupdir/$backupname-"`$DATE "+$DATEFORMAT"`".$EXTENSION" \
      $includes \
      > "$backupdir/$backupname-"`$DATE "+$DATEFORMAT"`.list \
      2> "$backupdir/$backupname-"`$DATE "+$DATEFORMAT"`.err
   [ $? -ne 0 ] && fatal "Tar backup failed"

接下来我们将要创建helper文件(/usr/share/backupninja/home.helper)。这样,hendlers将会以菜单的形式在ninjahelper中显示:   

代码如下:

# 备份操作描述,以下划线分割单词
   HELPERS="$HELPERS home:backup_of_home_directories"
   home_wizard() {
      home_title="Home action wizard"
      backupname=`hostname --fqdn`
   # 指定备份操作的时间
      inputBox "$home_title" "When to run this action?" "everyday at 01"
      [ $? = 1 ] && return
      home_when_run="when = $REPLY"
   # 指定备份文件名
      inputBox "$home_title" "\"Name\" of backups" "$backupname"
      [ $? = 1 ] && return
      home_backupname="backupname = $REPLY"
      backupname="$REPLY"
   # 指定保存备份文件的默认路径
      inputBox "$home_title" "Directory where to store the backups" "/var/backups/home"
      [ $? = 1 ] && return
      home_backupdir="backupdir = $REPLY"
   # 指定复选框的默认值
      radioBox "$home_title" "Compression" \
       "none"  "No compression" off \
       "gzip"  "Compress with gzip" on \
       "bzip"  "Compress with bzip" off
      [ $? = 1 ] && return;
      result="$REPLY"
      home_compress="compress = $REPLY "
      REPLY=
      while [ -z "$REPLY" ]; do
       formBegin "$home_title: Includes"
           formItem "Include:" /home/gacanepa
       formDisplay
       [ $? = 0 ] || return 1
       home_includes="includes = "
       for i in $REPLY; do
           [ -n "$i" ] && home_includes="$home_includes $i"
       done
      done
      REPLY=
      while [ -z "$REPLY" ]; do
       formBegin "$home_title: Excludes"
           formItem "Exclude:" *.mp3
           formItem "Exclude:" *.mp4
           # 按需增加多个“Exclude”文本框指定其他不须包含的内容
   formItem "Exclude:"
           formItem "Exclude:"
       formDisplay
       [ $? = 0 ] || return 1
       home_excludes="excludes = "
       for i in $REPLY; do
           [ -n "$i" ] && home_excludes="$home_excludes $i"
       done
      done
   # 保存配置
      get_next_filename $configdirectory/10.home
      cat > $next_filename <<EOF
   $home_when_run
   $home_backupname
   $home_backupdir
   $home_compress
   $home_includes
   $home_excludes
   # tar 程序的路径,必须为GNU tar
   TAR    `which tar`
   DATE    `which date`
   DATEFORMAT  "%Y-%m-%d"
   EXTENSION    tar
   EOF
   # 将配置文件的权限改为600
      chmod 600 $next_filename
   }

运行 ninjahelper

当创建了名为home的handler脚本以及对应的home.helper后,运行ninjahelper命令创建一个新的备份操作。

代码如下:

#ninjahelper

选择 create a new backup action(创建一个新的备份操作)。
如何在Debian系统中使用backupninja定制备份计划

接下来将看到可选的操作类型,这里选择“backup of home directories"(备份home目录):
如何在Debian系统中使用backupninja定制备份计划

然后会显示在helper中设置的默认值(这里只显示了3个)。可以编辑文本框中的值。注意,关于“when”变量的语法,参考文档的日程安排章节。
如何在Debian系统中使用backupninja定制备份计划

当完成备份操作的创建后,它会显示在ninjahelper的初始化菜单中:
如何在Debian系统中使用backupninja定制备份计划

按回车键显示这个备份操作的选项。因为它非常简单,所以我们可以随便对它进行一些实验。

注意,“run this action now"(立即运行)选项会不顾日程表安排的时间而立即进行备份操作:
如何在Debian系统中使用backupninja定制备份计划

备份操作会发生一些错误,debug会提供一些有用的信息以帮助你定位错误并纠正。例如,当备份操作有错误并且没有被纠正,那么当它运行时将会打印出如下所示的错误信息。
如何在Debian系统中使用backupninja定制备份计划

上面的图片告诉我们,用于完成备份操作的连接没有建立,因为它所需要链接的远程主机似乎宕机了。另外,在helper文件中指定的目标目录不存在。当纠正这些问题后,重新开始备份操作。

需要牢记的事情:

    当你在/usr/share/backupninja 下新建了一个自定义脚本(如foobar)来处理特殊的备份操作时,那么你还需要编写与之对应的helper(foobar.helper)文件,ninjahelper 将通过它生成名为10.foobar(下一个操作为11,以此类推)的文件,保存在/etc/backup.d目录下,而这个文件才是备份操作的真正的配置文件。
    可以通过ninjahelper设定好备份操作的执行时间,或按照“when”变量中设置的频率来执行。

感谢各位的阅读,以上就是“如何在Debian系统中使用backupninja定制备份计划”的内容了,经过本文的学习后,相信大家对如何在Debian系统中使用backupninja定制备份计划这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 如何在Debian系统中使用backupninja定制备份计划

本文链接: https://lsjlt.com/news/264754.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何在Debian系统中使用backupninja定制备份计划
    这篇文章主要讲解了“如何在Debian系统中使用backupninja定制备份计划”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何在Debian系统中使用backupninja定制备份计划...
    99+
    2023-06-13
  • 如何使用backupninja备份Debian系统
    这篇文章主要讲解了“如何使用backupninja备份Debian系统”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用backupninja备份Debian系统”吧!安装 Backup...
    99+
    2023-06-13
  • win8系统的计划备份使用教程在固定时间进行数据备份
    计划备份是针对系统在固定时间,进行数据备份的一个很人性化的功能,尤其是那些小白朋友们,一旦系统出现问题就能直接备份恢复系统,省去了复杂的操作。但是对于一些对电脑比较熟悉的朋友来说,计划备份就有点鸡肋了,重要...
    99+
    2022-06-04
    数据备份 备份 时间
  • 如何使用Systemd和Crontab在Linux系统中定时备份数据
    要使用Systemd和Crontab在Linux系统中定时备份数据,可以按照以下步骤进行操作:1. 创建一个脚本文件,用于执行数据备...
    99+
    2023-10-09
    Linux
  • 使用OneKey如何备份系统
    使用OneKey如何备份系统 ?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。方法/步骤用U盘启动大师进入PE系统后,在桌面鼠标双击OneKey Ghost则打开了此工具如下...
    99+
    2023-06-13
  • 如何在Linux系统中定时备份postgresql 数据库
    今天就跟大家聊聊有关如何在Linux系统中定时备份postgresql 数据库,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一 创建备份shell脚本**1.创建备份脚本存放路径:m...
    99+
    2023-06-06
  • 如何在Ubuntu中进行系统备份
    在Ubuntu中,您可以使用内置的备份工具Deja Dup来进行系统备份。以下是在Ubuntu中使用Deja Dup进行系统备份的步...
    99+
    2024-04-02
  • 如何使用rsync来备份Linux 系统
    这篇文章主要介绍“如何使用rsync来备份Linux 系统”,在日常操作中,相信很多人在如何使用rsync来备份Linux 系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用rsync来备份Linux...
    99+
    2023-06-16
  • 如何在Couchbase中实现数据备份和灾难恢复计划
    在Couchbase中实现数据备份和灾难恢复计划可以通过以下步骤来进行: 使用Couchbase内置的备份和恢复功能:Couch...
    99+
    2024-04-09
    Couchbase
  • 电脑中如何使用一键GHOST备份系统
    这篇文章将为大家详细讲解有关电脑中如何使用一键GHOST备份系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一键ghost备份系统的具体操作如下:首先下载并运行“一键GHOST硬盘版”工具,在软件的主界...
    99+
    2023-06-27
  • 如何使用dd命令备份Linux系统
    这篇文章给大家分享的是有关如何使用dd命令备份Linux系统的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。dd,是 device driver 的缩写,它可以称得上是“Linux 世界中的搬运工”,它用来读取设备...
    99+
    2023-06-28
  • 在Linux中如何使用cron计划任务
    这篇文章主要介绍在Linux中如何使用cron计划任务,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!常见(和非常见)的 cron 用途我使用 cron 服务去安排一些常见的事情,比如,每天凌晨 2:00 发生的定期备...
    99+
    2023-06-16
  • Win8.1系统如何使用自带映像备份功能进行备份?
    操作步骤: 1、首先打开控制面板—系统与安全–历史文件记录(通过历史文件记录保存你的历史文件副本)。 2、左下角就有“系统映像恢复”的按钮了,点开; 3、选...
    99+
    2022-06-04
    映像 自带 如何使用
  • 如何使用Shell脚本定时备份清除运行系统日志
    小编给大家分享一下如何使用Shell脚本定时备份清除运行系统日志,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、写备份并清除老日志Shell脚本:代码如下:#!...
    99+
    2023-06-09
  • UNIX管道和重定向功能在系统备份中怎么用
    本篇内容介绍了“UNIX管道和重定向功能在系统备份中怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!UNIX命令有三个有效的数据流:标准...
    99+
    2023-06-17
  • 如何在thinkphp中使用windows计划任务定时执行php文件
    实现思路如下: 通过win的“任务”功能来定时执行一个bat文件,bat文件会调用php.exe文件,php.exe可以传递参数指定执行哪个类和方法 方法如下: 一,thinkphp...
    99+
    2024-04-02
  • 如何在阿里云服务器系统中备份数据
    在使用阿里云服务器系统的过程中,数据备份是非常重要的一环。因为数据是企业或个人的宝贵财富,一旦丢失或损坏,可能会造成不可挽回的损失。本文将详细介绍如何在阿里云服务器系统中备份数据。 一、阿里云服务器数据备份方法阿里云服务器提供了多种数据备份...
    99+
    2023-10-30
    阿里 备份 服务器
  • 如何在Debian上使用systemd工具对系统进行管理
    本篇内容介绍了“如何在Debian上使用systemd工具对系统进行管理”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!“一个软件只做一件事情...
    99+
    2023-06-13
  • 如何在centos中使用crontab命令对mongodb进行定时备份
    这篇文章给大家介绍如何在centos中使用crontab命令对mongodb进行定时备份,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、创建Mongodb数据库备份目录mkdir&n...
    99+
    2024-04-02
  • Linux系统如何使用dd命令进备份数据
    这篇文章主要介绍了Linux系统如何使用dd命令进备份数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。例 1:备份整个硬盘使用dd命令备份整个硬盘。在这个例子中,源硬盘的设...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作