回答
如果您要管理自己的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 -- "[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
从这些备份恢复是稍后的练习。
祝你好运。
我不认为它有意义,有一个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教程我自己)
是的,我通过这个tutorial.Great工作的人:)继续做伟大的工作。 – user3086014
- 1. 如何备份Bacula的大文件?
- 2. 如何使用以下格式编写SQL数据库备份脚本:Demo_YYYYMMDD_XX.bak
- 3. 如何使用MSBUild 2010编写脚本
- 4. 如何使用DOM编写脚本?
- 5. 如何使用Haskell编写CGI脚本?
- 6. 如何编写使用gdb的脚本?
- 7. Bash备份脚本
- 8. SQL脚本备份
- 9. Unix备份脚本
- 10. Mysql备份脚本
- 11. 使用powerCLI脚本编写脚本
- 12. 只备份public_html的PHP备份脚本
- 13. 使用C#编写脚本?
- 14. 如何备份和从脚本
- 15. 如何备份Google Apps脚本的scriptdb
- 16. 样本备份脚本
- 17. 如何编写Ant脚本?
- 18. 如何编写ASP.NET脚本
- 19. 如何编写shell脚本?
- 20. 如何编写shell脚本
- 21. 备份文件脚本
- 22. 路由器备份脚本
- 23. Python中的备份脚本
- 24. Windows增量备份脚本
- 25. MongoDB的备份脚本
- 26. bash备份脚本错误
- 27. PHP递归备份脚本
- 28. 备份脚本 - 递归
- 29. shell脚本备份系统
- 30. 简单备份脚本
我会在需要时接近你。我在Linux上工作,但我不知道shell脚本和bacula。但我必须这样做。你能告诉我如何备份不同文件中不同机器上的多个目录。目前bacula服务器只有一个文件,它总是附加到每个系统。它不会为不同的系统创建一个新文件。 – user3086014
使用''rsh''或''ssh''命令来调用远程系统上的远程调用。或者,配置''bacula''为你做。 ''bacula''是一个非常有能力的系统;你不应该写很多脚本。请参阅[Bacula手册](http://www.bacula.org/5.2.x-manuals/en/main/main/Bacula_Main_Reference.html) – aks
你可以告诉我如何使用bacula做到这一点吗?我明白它是如何工作的,但没有完整的知识。 – user3086014