0

我对这个 shell 脚本和 bacula 很陌生。我想创建一个使用 bacula 安排备份的脚本?

怎么做?

有什么线索值得赞赏吗?

谢谢。

4

2 回答 2

3

如果您要管理自己的 Linux 系统,请学习bash. 该man页面非常详细且有用。做man bash

如果您真的是 Linux 和命令行的新手,那么管理bacula不适合新手。它是一个相当全面的备份系统,用于多个系统,带有一个中央数据库,这意味着它也很复杂。

Linux 上有更简单的工具可用于执行简单的系统备份,这些工具同样可靠。如果你只是想备份你的主目录,tar或者zip是优秀的工具。特别是,tar可以同时进行完整备份和增量备份。

假设您确实想使用bacula并且有足够的信息来编写几个简单的脚本,那么即使如此,原始请求也是模棱两可的。

您的意思是安排定期cron作业以在无人值守的情况下完成备份吗?或者,您的意思是bacula在确定的时间和日期安排一次调用?

无论哪种情况,最好创建两个简单的脚本:一个执行完整备份,一个执行增量备份。完整备份应该每周或每月运行一次,而增量备份应该每天或每周运行一次——这取决于系统数据更改的频率。

大多数日常使用的普通站点都会进行每日增量备份,并在周末(例如,周日)进行完整备份。这样,如果系统在周五崩溃,您将需要使用最近的完整备份(在前一个周日)进行恢复,然后使用每天的增量备份(周一、周二、周三、周四)进行恢复。您可能会丢失崩溃当天发生的数据更改。

如果数据更改的速度是每小时一次,并且每小时的速度恢复很重要,那么应该每小时安排一次增量,每晚进行一次完整备份。

一个重要的考虑因素是知道要备份的确切内容。大多数家庭用户希望他们的主目录是可恢复的。操作系统根和应用程序分区通常无需备份即可轻松恢复。或者,这些备份以非常不频繁的时间表(比如一个月左右一次)进行备份,因为它们的更改频率必须低于用户的主目录。

另一个重要的考虑因素是在哪里放置备份。 Bacula支持外部存储设备,例如磁带,它们不是挂载的文件系统。 tar还支持磁带存档。大多数家庭用户都有某种用于存储备份的 USB 或网络附加存储。

让我们假设备份存储在 上/mnt/backups/,并且假设用户的主目录(和子目录)都将被备份并可以恢复。

% cat <<EOF >/usr/local/bin/full-backup
#!/bin/bash
# full-backup SRCDIRS [--options]
# incr-backup SRCDIRS [--options]
#
# set destdir to the path at which the backups will be stored
# each backup will be stored in a directory of the date of the
# archive, grouped by month.  The directories will be:
#
# /mnt/backups/2014/01
# /mnt/backups/2014/02
# ...
# the full and incremental files will be named this way:
#
# /mnt/backups/2014/01/DIR-full-2014-01-24.192832.tgz
# /mnt/backups/2014/01/DIR-incr-2014-01-25.192531.tgz
# ...
# where DIR is the name of the source directory.
#
# There is also a file named ``lastrun`` which is used for
# its last mod-time which is used to select files changed 
# since the last backup.

$PROG=${0##*/}              # prog name: full-backup or incr-backup

destdir=/mnt/backup
now=`date +"%F-%H%M%S"`
monthdir=`date +%Y-%m`
dest=$destdir/$monthdir/
set -- "$@"
while (( $# > 0 )) ; do
  dir="$1" ; shift ; 
  options=''                                  # collect options
  while [[ $# -gt 0 && "x$1" =~ x--* ]]; do   # any options?
    options="$options $1"
    shift
  done
  basedir=`basename $dir`
  fullfile=$dest/$basedir-full-$now.tgz
  incrfile=$dest/$basedir-incr-$now.tgz
  lastrun=$destdir/lastrun
  case "$PROG" in
    full*) archive="$fullfile" newer=                   kind=Full ;;
    incr*) archive="$incrfile" newer="--newer $lastrun" kind=Incremental ;;
  esac
  cmd="tar cfz $archive $newer $options $dir"
  echo "$kind backup starting at `date`"
  echo ">> $cmd"
  eval "$cmd"
  echo "$kind backup done at `date`"
  touch $lastrun  # mark the end of the backup date/time
exit
EOF
(cd /usr/local/bin ; ln -s full-backup incr-backup )
chmod +x /usr/local/bin/full-backup

一旦此脚本配置并可用,就可以使用cron. 见man cron。用于cron -e创建和编辑一个 crontab 条目以full-backup每周调用一次(例如),以及另一个 crontab 条目以incr-backup每天调用一次。以下是三个示例 crontab 条目(man 5 crontab有关语法的详细信息,请参阅),用于执行增量备份和完整备份,以及删除旧存档。

# run incremental backups on all user home dirs at 3:15 every day
15 3 * * *   /usr/local/bin/incr-backup /Users
# run full backups every sunday, at 3:15
15 3 * * 7   /usr/local/bin/full-backup /Users
# run full backups on the entire system (but not the home dirs) every month
30 4 * 1 7   /usr/local/bin/full-backup / --exclude=/Users --exclude=/tmp --exclude=/var
# delete old backup files (more than 60 days old) once a month
15 3 * 1 7   find /mnt/backups -type f -mtime +60 -delete

从这些备份中恢复是留给以后的练习。

祝你好运。

于 2014-01-23T08:24:38.770 回答
3

我认为有一个 cron 计划脚本来激活 Bacula 并没有意义。

使用 bacula 安排备份的标准方法是:1)在要备份的机器上安装 Bacula 文件守护程序,然后 2)配置 Bacula 目录以安排备份

ad 1) 如果您要备份的机器是 Debian 或 Ubuntu,您可以像这样从 shell 安装 Bacula 文件守护程序:shell> apt-get install bacula-fd(bacula-fd 代表 Bacula 文件守护程序)如果您要备份的机器是Windows,则需要下载Bacula文件守护进程并安装。您可以在此处下载:http: //sourceforge.net/projects/bacula/files/Win32_64/(选择与您的 Bacula 服务器版本匹配的版本)

ad 2) 您需要在您的 Bacula 服务器上找到 bacula-dir.conf 文件(如果您在 Ubuntu 机器上安装了 Bacula Director,则路径为:/etc/bacula/bacula-dir.conf) bacula-dir。 conf schedule 部分非常灵活,因此也有些复杂,这里有一个例子:

Schedule {
    Name = "MonthlyCycle"
    Run = Level=Full on 1 at 2:05 # full backup the 1. of every month at 2:05.
    Run = Level=Incremental on 2-31 at 2:05 # incremental backup all other days.
}

请注意,运行 Bacula 需要进行更多配置,这里有一个完整的教程,如何安装、配置、备份和恢复 Bacula:http ://webmodelling.com/webbits/miscellaneous/bacula.aspx (免责声明:我写了Bacula 教程我自己)

于 2014-01-23T12:13:52.543 回答