我对这个shell脚本和bacula非常新。我想创建一个使用bacula安排备份的脚本吗?
怎么做?
任何领导都表示赞赏?
感谢。
答案 0 :(得分:3)
我认为使用cron预定脚本来激活Bacula并不意味着它。
使用bacula安排备份的标准方法是: 1)在要备份的计算机上安装Bacula文件守护程序 2)配置您的Bacula目录以安排备份
ad 1) 如果要备份的机器是Debian或Ubuntu,您可以从shell安装Bacula文件守护程序,如下所示: 外壳> apt-get install bacula-fd (bacula-fd代表Bacula File Daemon) 如果要备份的计算机是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 {
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教程)
答案 1 :(得分:2)
如果您要管理自己的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
从这些备份中恢复是稍后的练习。
祝你好运。