• 热门搜索:
  • 装机系统
  • 雨林木风系统
  • 深度系统
  • 电脑公司系统
  • win7装机版
  • 教程分类
    当前位置:主页 > 教程咨询 > Linux教程

    使用 backupninja 为 Debian 定制备份计划

    来源:装机员┆发布时间:2017-09-11 00:03┆点击:

    装机员为您提供使用 backupninja 为 Debian 定制备份计划的文章咨询供您阅读,如何使用使用 backupninja 为 Debian 定制备份计划的方法对您有帮助也请您举手之劳分享给您身边的人。

    backupninja是Debian系统(以及基于Debian的发行版)中一个强大的、高度可配置的备份软件。在前一篇教程中,我们探讨了如何安装backupninja以及如何设置两个备份操作并执行。然而,那些只是冰山一角。这一次,装机系统,我们要讨论如何定制 Handler 和 Helper ,使用这些功能定制策略以完成任何备份需要。

    使用 backupninja 为 Debian 定制备份计划

    回顾 backupninja

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

    创建定制的Handler与Helper

    这一节的目标是创建一个脚本,将home路径以gzipbzip2压缩包的形式备份起来,不包括音乐与视频文件。我们将这个文件命名为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]||return1

    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]||return1

    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(创建一个新的备份操作)。

    使用 backupninja 为 Debian 定制备份计划

    接下来将看到可选的操作类型,这里选择“backup of home directories"(备份home路径):

    使用 backupninja 为 Debian 定制备份计划


    以上就是装机员给大家介绍的如何使用使用 backupninja 为 Debian 定制备份计划的方法了,如何使用使用 backupninja 为 Debian 定制备份计划的方法到这里也全部结束了相信大家对如何使用使用 backupninja 为 Debian 定制备份计划的方法都有一定的了解了吧,好了,如果大家还想了解更多的资讯,那就赶紧点击装机员系统官网吧。

    本文来自装机员www.zhuangjiyuan.com如需转载请注明!

    Tag标签| RSS订阅 | 网站地图
    装机员系统之家提供win7装机版xp系统下载win7系统下载、最新Windows10系统下载,专为装机修机员奉上最好的软件、系统、U盘pe、程等平台
    请勿发布违反国家法律法规的内容,会员观点不代表本站立场.本站发布的系统与软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,
    否则后果自负,请支持购买微软正版软件! 如侵犯到您的权益,请及时通知我们,我们会及时处理。 粤ICP备15116662号