2014-01-23 48 views

回答

2

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

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

Linux上有很多简单的工具可用于执行简单的系统备份,这些备份同样可靠。如果你只是想备份你的主目录,tarzip是很好的工具。特别是,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 -- "[email protected]" 
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 

从这些备份恢复是稍后的练习。

祝你好运。

+0

我会在需要时接近你。我在Linux上工作,但我不知道shell脚本和bacula。但我必须这样做。你能告诉我如何备份不同文件中不同机器上的多个目录。目前bacula服务器只有一个文件,它总是附加到每个系统。它不会为不同的系统创建一个新文件。 – user3086014

+0

使用''rsh''或''ssh''命令来调用远程系统上的远程调用。或者,配置''bacula''为你做。 ''bacula''是一个非常有能力的系统;你不应该写很多脚本。请参阅[Bacula手册](http://www.bacula.org/5.2.x-manuals/en/main/main/Bacula_Main_Reference.html) – aks

+0

你可以告诉我如何使用bacula做到这一点吗?我明白它是如何工作的,但没有完整的知识。 – user3086014

3

我不认为它有意义,有一个cron计划脚本来激活Bacula。

的标准方式使用Bacula的安排备份: 1)安装要备份机器上的Bacula的文件守护进程,然后 2)配置您的Bacula的目录制定备份计划

广告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的服务器版本,该版本) 你需要找到你的Bacula的服务器上的bacula-dir.conf文件

广告2)(如果Ubuntu的机器上安装Bacula的董事,则路径是:/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教程我自己)

+0

是的,我通过这个tutorial.Great工作的人:)继续做伟大的工作。 – user3086014