mirror of
https://github.com/netbirdio/FreeBSD-ports.git
synced 2026-05-22 18:42:42 -07:00
sysutils/bacula13-server: New ports for Bacula 13
NOTE: I am unsure of how stable this is. Please proceed with caution. Also coming in: * sysutils/bacula13-client * sysutils/bacula13-docs * net-mgmt/nagios-check_bacula13 Not present yet: sysutils/bacula13-client-static because of unknown build issues.
This commit is contained in:
@@ -138,6 +138,7 @@
|
||||
SUBDIR += nagios
|
||||
SUBDIR += nagios-certexp-plugin
|
||||
SUBDIR += nagios-check_bacula11
|
||||
SUBDIR += nagios-check_bacula13
|
||||
SUBDIR += nagios-check_bacula9
|
||||
SUBDIR += nagios-check_clamav
|
||||
SUBDIR += nagios-check_cpu_usage
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
# Created by: Anders Troback
|
||||
|
||||
PORTNAME= bacula
|
||||
CATEGORIES= net-mgmt
|
||||
PKGNAMEPREFIX= nagios-check_
|
||||
PKGNAMESUFFIX= 13
|
||||
|
||||
MAINTAINER= dvl@FreeBSD.org
|
||||
COMMENT= Nagios plugin for Bacula
|
||||
|
||||
LIB_DEPENDS+= libbac.so:sysutils/bacula13-client
|
||||
|
||||
PLIST= ${.CURDIR}/pkg-plist
|
||||
PLIST_FILES= libexec/nagios/check_bacula
|
||||
WITH_NAGIOS_CHECK_ONLY= yes
|
||||
MASTERDIR= ${.CURDIR}/../../sysutils/bacula13-server
|
||||
|
||||
CONFIGURE_ARGS= --enable-client-only \
|
||||
--disable-build-dird \
|
||||
--disable-build-stored \
|
||||
--disable-nls \
|
||||
--disable-xatt
|
||||
|
||||
OPTIONS_DEFINE= #
|
||||
OPTIONS_DEFAULT=#
|
||||
|
||||
NO_CCACHE= yes
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,2 @@
|
||||
check_bacula is a plugin intended for use with the
|
||||
Nagios network monitoring system to monitor Bacula.
|
||||
@@ -87,6 +87,9 @@
|
||||
SUBDIR += bacula11-client-static
|
||||
SUBDIR += bacula11-docs
|
||||
SUBDIR += bacula11-server
|
||||
SUBDIR += bacula13-client
|
||||
SUBDIR += bacula13-docs
|
||||
SUBDIR += bacula13-server
|
||||
SUBDIR += bacula9-client
|
||||
SUBDIR += bacula9-client-static
|
||||
SUBDIR += bacula9-docs
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
yPORTNAME= bacula
|
||||
PKGNAMESUFFIX= 13-client
|
||||
|
||||
COMMENT= Network backup solution (client)
|
||||
|
||||
BROKEN_aarch64= Fails to link: missing sbrk
|
||||
BROKEN_riscv64= Fails to link: missing sbrk
|
||||
|
||||
WITH_CLIENT_ONLY=yes
|
||||
USE_RC_SUBR= bacula-fd
|
||||
|
||||
PLIST= ${PKGDIR}/pkg-plist.client
|
||||
MASTERDIR= ${.CURDIR}/../../sysutils/bacula13-server
|
||||
|
||||
OPTIONS_DEFINE= NLS PYTHON IPV6
|
||||
|
||||
.include "${MASTERDIR}/Makefile"
|
||||
@@ -0,0 +1,26 @@
|
||||
PORTNAME= bacula
|
||||
PORTVERSION= 13.0.0
|
||||
CATEGORIES= sysutils
|
||||
MASTER_SITES= SF
|
||||
PKGNAMESUFFIX= 13-docs
|
||||
DISTNAME= ${PORTNAME}-docs-${PORTVERSION}
|
||||
|
||||
CONFLICTS= bacula9
|
||||
|
||||
MAINTAINER= dvl@FreeBSD.org
|
||||
COMMENT= Bacula document set
|
||||
|
||||
USES= tar:bz2
|
||||
NO_BUILD= yes
|
||||
NO_ARCH= yes
|
||||
|
||||
PORTDOCS= *.pdf
|
||||
|
||||
OPTIONS_DEFINE= DOCS
|
||||
|
||||
do-install:
|
||||
${MKDIR} ${STAGEDIR}${DOCSDIR}
|
||||
${FIND} ${WRKSRC}/manuals/en \
|
||||
-name "*.pdf" -exec ${INSTALL_DATA} {} ${STAGEDIR}${DOCSDIR}/ \;
|
||||
|
||||
.include <bsd.port.mk>
|
||||
@@ -0,0 +1,3 @@
|
||||
TIMESTAMP = 1657413208
|
||||
SHA256 (bacula-docs-13.0.0.tar.bz2) = 7a2425f1a7b5c69af4ed8ea24de9e607a2135b527fa6ce93879f216e6d1c869a
|
||||
SIZE (bacula-docs-13.0.0.tar.bz2) = 67807462
|
||||
@@ -0,0 +1,13 @@
|
||||
Bacula is a set of computer programs that permit you (or the system
|
||||
administrator) to manage backup, recovery, and verification of
|
||||
computer data across a network of computers of different kinds.
|
||||
In technical terms, it is a network Client/Server based backup program.
|
||||
Bacula is relatively easy to use and efficient, while offering many
|
||||
advanced storage management features that make it easy to find and
|
||||
recover lost or damaged files. Due to its modular design, Bacula is
|
||||
scalable from small single computer systems to systems consisting of
|
||||
hundreds of computers located over a large network.
|
||||
|
||||
This port installs the latest documentation for Bacula.
|
||||
|
||||
WWW: https://www.bacula.org/
|
||||
@@ -0,0 +1,199 @@
|
||||
PORTNAME= bacula
|
||||
DISTVERSION= 13.0.0
|
||||
CATEGORIES?= sysutils
|
||||
MASTER_SITES= SF/bacula/bacula/${PORTVERSION}
|
||||
PKGNAMEPREFIX?= #
|
||||
PKGNAMESUFFIX?= 13-server
|
||||
|
||||
MAINTAINER= dvl@FreeBSD.org
|
||||
COMMENT?= Network backup solution (server)
|
||||
|
||||
LICENSE= AGPLv3
|
||||
LICENSE_FILE= ${WRKSRC}/LICENSE
|
||||
|
||||
USES+= cpe libtool readline shebangfix ssl
|
||||
SHEBANG_FILES= src/cats/make_catalog_backup.pl.in scripts/baculabackupreport.in
|
||||
|
||||
CONFLICTS?= bacula13-server bacula9-server bacula-server
|
||||
|
||||
LIB_DEPENDS+= liblzo2.so:archivers/lzo2
|
||||
|
||||
USERS= bacula
|
||||
GROUPS= ${USERS}
|
||||
|
||||
PLIST_SUB+= LIB_VERSION=${PORTVERSION}
|
||||
|
||||
GNU_CONFIGURE= yes
|
||||
USE_LDCONFIG= yes
|
||||
|
||||
CPPFLAGS+= -I${LOCALBASE}/include
|
||||
LDFLAGS+= -L${LOCALBASE}/lib
|
||||
|
||||
OPTIONS_DEFINE?= MTX NLS IPV6
|
||||
MTX_DESC= Install mtx for control of autochanger devices
|
||||
|
||||
.if ${PKGNAMESUFFIX} == "13-server"
|
||||
OPTIONS_MULTI= BACKEND
|
||||
OPTIONS_MULTI_BACKEND= SQLITE3 MYSQL PGSQL
|
||||
OPTIONS_DEFAULT+= PGSQL
|
||||
.endif
|
||||
|
||||
OPTIONS_SUB= yes
|
||||
|
||||
.if ${PKGNAMESUFFIX} == "13-client" || ${PKGNAMESUFFIX} == "13-server" #Till end of the file
|
||||
|
||||
.if !defined(WITH_CLIENT_ONLY)
|
||||
LIB_DEPENDS+= libbac-${PORTVERSION}.so:sysutils/bacula13-client
|
||||
USE_RC_SUBR?= bacula-dir bacula-sd
|
||||
.endif
|
||||
|
||||
.if defined(WITH_CLIENT_ONLY)
|
||||
SUB_FILES+= pkg-install.client pkg-deinstall.client pkg-message.client
|
||||
.else
|
||||
SUB_FILES+= pkg-message.server
|
||||
.endif
|
||||
|
||||
CONFIGURE_ARGS+=--with-tcp-wrappers=/usr/lib \
|
||||
--enable-smartalloc \
|
||||
--sysconfdir=${ETCDIR} \
|
||||
--with-working-dir=${BACULA_DIR} \
|
||||
--with-scriptdir=${PREFIX}/share/${PORTNAME} \
|
||||
--disable-conio \
|
||||
--enable-batch-insert \
|
||||
--with-plugindir=${PREFIX}/lib \
|
||||
--with-dump-email=root@localhost \
|
||||
--with-job-email=root@localhost \
|
||||
--with-db-name=bacula \
|
||||
--with-sbin-perm=755 \
|
||||
--with-db-user=bacula \
|
||||
--with-logdir=/var/log \
|
||||
--with-baseport=9101
|
||||
|
||||
.if defined(WITH_CLIENT_ONLY)
|
||||
CONFIGURE_ARGS+=--with-fd-user=root \
|
||||
--with-fd-group=wheel
|
||||
.else
|
||||
CONFIGURE_ARGS+=--with-dir-user=${BACULA_USER} \
|
||||
--with-dir-group=${BACULA_GROUP} \
|
||||
--with-sd-user=${BACULA_USER} \
|
||||
--with-sd-group=operator
|
||||
.endif
|
||||
|
||||
# The user/group IDs below are registered, see
|
||||
# http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/book.html#users-and-groups
|
||||
#
|
||||
BACULA_USER?= bacula
|
||||
BACULA_GROUP?= ${BACULA_USER}
|
||||
BACULA_UID?= bacula
|
||||
BACULA_GID?= ${BACULA_UID}
|
||||
BACULA_DIR?= /var/db/bacula
|
||||
|
||||
PLIST_SUB+= BACULA_DIR=${BACULA_DIR}
|
||||
|
||||
SUB_LIST= BACULA_USER=${BACULA_USER} \
|
||||
BACULA_GROUP=${BACULA_GROUP} \
|
||||
BACULA_UID=${BACULA_UID} \
|
||||
BACULA_GID=${BACULA_GID} \
|
||||
BACULA_DIR=${BACULA_DIR}
|
||||
|
||||
NLS_USES= gettext
|
||||
NLS_CONFIGURE_ENABLE= nls
|
||||
|
||||
# Client only or full server version
|
||||
.if defined(WITH_CLIENT_ONLY)
|
||||
CONFFILES= fd
|
||||
CONFIGURE_ARGS+= --enable-client-only
|
||||
|
||||
PKGDEINSTALL= ${FILESDIR}/pkg-deinstall.client
|
||||
PKGINSTALL= ${FILESDIR}/pkg-install.client
|
||||
.else
|
||||
# Server only Options
|
||||
CONFFILES= sd dir
|
||||
# Server default database
|
||||
|
||||
MYSQL_CONFIGURE_ON= --with-mysql=yes
|
||||
MYSQL_USES= mysql
|
||||
SQLITE3_CONFIGURE_ON= --with-sqlite3=yes
|
||||
SQLITE3_USES= sqlite:3
|
||||
PGSQL_CONFIGURE_ON= --with-postgresql=yes
|
||||
PGSQL_USES= pgsql
|
||||
|
||||
MTX_RUN_DEPENDS= ${LOCALBASE}/sbin/mtx:misc/mtx
|
||||
|
||||
.endif
|
||||
|
||||
.include <bsd.port.pre.mk>
|
||||
|
||||
# if IPv6 is not in the kernel, it generates many errors
|
||||
.if ! ${PORT_OPTIONS:MIPV6}
|
||||
CONFIGURE_ARGS+= --disable-ipv6
|
||||
.endif
|
||||
|
||||
CONFIGURE_ARGS+= --with-readline=${LOCALBASE}
|
||||
|
||||
.if defined(WITH_CLIENT_ONLY)
|
||||
MP8+= bacula.8 bacula-fd.8 bconsole.8
|
||||
.else
|
||||
MP8+= bacula-dir.8 bacula-sd.8 bcopy.8 bextract.8 bls.8 bscan.8 \
|
||||
btape.8 btraceback.8 dbcheck.8 bwild.8 bregex.8
|
||||
MP1+= bsmtp.1 bacula-tray-monitor.1
|
||||
.endif
|
||||
|
||||
MAKE_ENV+= MAN8="${MP8}" MAN1="${MP1}"
|
||||
|
||||
post-patch:
|
||||
# This port does not install docs. See bacula-docs for that
|
||||
@${REINPLACE_CMD} -e '/docdir/d' ${WRKSRC}/Makefile.in
|
||||
# Change $(ECHO) to echo in some Makefile.in files
|
||||
@${REINPLACE_CMD} -e 's|$$(ECHO)|echo|g' \
|
||||
${WRKSRC}/src/filed/Makefile.in \
|
||||
${WRKSRC}/src/console/Makefile.in \
|
||||
${WRKSRC}/src/cats/Makefile.in \
|
||||
${WRKSRC}/src/dird/Makefile.in \
|
||||
${WRKSRC}/src/stored/Makefile.in \
|
||||
${WRKSRC}/src/tools/Makefile.in
|
||||
|
||||
# Default bconsole.conf is in ${ETCDIR}
|
||||
@${REINPLACE_CMD} -e 's|./bconsole.conf|${ETCDIR}/bconsole.conf|g' ${WRKSRC}/src/console/console.c
|
||||
@${REINPLACE_CMD} -e 's|^MAN8 =|MAN8 ?=|g' -e 's|^MAN1 =|MAN1 ?=|g' ${WRKSRC}/manpages/Makefile.in
|
||||
.if defined(WITH_CLIENT_ONLY)
|
||||
# In client port only install startup script out of script dir (see below post-install)
|
||||
# Dont mkdir ${PREFIX}/share/bacula cause it's empty
|
||||
@${REINPLACE_CMD} -e 's|^\(fd_subdirs = .*\)scripts\(.*\)|\1\2|g' ${WRKSRC}/Makefile.in
|
||||
@${REINPLACE_CMD} -e 's|\(.*$${MKDIR} $${DESTDIR}$${scriptdir}\)|#\1|g' ${WRKSRC}/Makefile.in
|
||||
.else
|
||||
# In server port don't install filed
|
||||
@${REINPLACE_CMD} -e '/^fd_subdirs = /s|src/filed||' -e 's|src/console||' \
|
||||
${WRKSRC}/Makefile.in
|
||||
.endif
|
||||
|
||||
.if !target(post-install)
|
||||
post-install:
|
||||
.if defined(WITH_CLIENT_ONLY)
|
||||
${MV} ${STAGEDIR}${ETCDIR}/bconsole.conf ${STAGEDIR}${ETCDIR}/bconsole.conf.sample
|
||||
${INSTALL_DATA} ${WRKSRC}/examples/sample-query.sql ${STAGEDIR}${LOCALBASE}/share/bacula/query.sql.sample
|
||||
.else
|
||||
${INSTALL_SCRIPT} ${FILESDIR}/chio-bacula ${STAGEDIR}${PREFIX}/sbin
|
||||
${INSTALL_DATA} ${FILESDIR}/bacula-barcodes ${STAGEDIR}${ETCDIR}/bacula-barcodes.sample
|
||||
# bacula-dir attempts to install query.sql as bpart of bacula-server, but that should only installed by bacula-client.
|
||||
${RM} ${STAGEDIR}${LOCALBASE}/share/bacula/query.sql
|
||||
|
||||
#the following are installed by the -CLIENT port, and I (ler@lerctr.org)
|
||||
#don't know how to remove them from being built for the -SERVER port.
|
||||
${RM} ${STAGEDIR}${LOCALBASE}/lib/bpipe-fd.so
|
||||
${RM} ${STAGEDIR}${LOCALBASE}/lib/libbac-${PORTVERSION}.so
|
||||
${RM} ${STAGEDIR}${LOCALBASE}/lib/libbac.so
|
||||
${RM} ${STAGEDIR}${LOCALBASE}/lib/libbaccfg-${PORTVERSION}.so
|
||||
${RM} ${STAGEDIR}${LOCALBASE}/lib/libbaccfg.so
|
||||
${RM} ${STAGEDIR}${LOCALBASE}/lib/libbacfind-${PORTVERSION}.so
|
||||
${RM} ${STAGEDIR}${LOCALBASE}/lib/libbacfind.so
|
||||
.endif
|
||||
for na in ${CONFFILES}; do \
|
||||
${MV} ${STAGEDIR}${ETCDIR}/bacula-$$na.conf ${STAGEDIR}${ETCDIR}/bacula-$$na.conf.sample; \
|
||||
done
|
||||
.endif
|
||||
.else
|
||||
.include "${MASTERDIR}/Makefile.common"
|
||||
.endif # 13-client and 13-server are defined
|
||||
|
||||
.include <bsd.port.post.mk>
|
||||
@@ -0,0 +1,24 @@
|
||||
.include <bsd.port.pre.mk>
|
||||
|
||||
post-build:
|
||||
.if ${PKGNAMEPREFIX} == "nagios-check_"
|
||||
${MAKE_CMD} -C ${WRKSRC}/examples/nagios/check_bacula
|
||||
.endif
|
||||
|
||||
do-install:
|
||||
.if ${PKGNAMESUFFIX} == "11-bat"
|
||||
# Install config files and preserve existing ones
|
||||
${MKDIR} ${STAGEDIR}${ETCDIR}
|
||||
${INSTALL_SCRIPT} ${WRKSRC}/src/qt-console/bat.conf ${STAGEDIR}${PREFIX}/etc/bacula/bat.conf.sample
|
||||
${INSTALL_MAN} ${WRKSRC}/manpages/bat.1 ${STAGEDIR}${PREFIX}/man/man1/
|
||||
${INSTALL_PROGRAM} ${WRKSRC}/src/qt-console/bat ${STAGEDIR}${PREFIX}/sbin
|
||||
.endif
|
||||
.if ${PKGNAMEPREFIX} == "nagios-check_"
|
||||
@${MKDIR} ${STAGEDIR}${PREFIX}/libexec/nagios
|
||||
${INSTALL_PROGRAM} ${WRKSRC}/examples/nagios/check_bacula/check_bacula \
|
||||
${STAGEDIR}${PREFIX}/libexec/nagios
|
||||
.endif
|
||||
.if ${PKGNAMESUFFIX} == "11-client-static"
|
||||
${INSTALL_PROGRAM} ${WRKSRC}/src/filed/static-bacula-fd ${STAGEDIR}${PREFIX}/sbin/bacula-fd-static
|
||||
${INSTALL_PROGRAM} ${WRKSRC}/src/console/static-bconsole ${STAGEDIR}${PREFIX}/sbin/bconsole-static
|
||||
.endif
|
||||
@@ -0,0 +1,3 @@
|
||||
TIMESTAMP = 1657411910
|
||||
SHA256 (bacula-13.0.0.tar.gz) = 4119d48bbfe1518b3224a88e7365c2fa5f7d1679c815e7d15f26631883a8a0c6
|
||||
SIZE (bacula-13.0.0.tar.gz) = 6220579
|
||||
@@ -0,0 +1,51 @@
|
||||
#
|
||||
# Bacula barcode simulation file
|
||||
# used by ${PREFIX}/sbin/chio-bacula (FreeBSD)
|
||||
#
|
||||
# The volumenames are returned by the "changer list" command
|
||||
# labeling in the console is done by "label barcodes"
|
||||
# (then all volumes belog to the default pool).
|
||||
# All Lines with an "#" at the bedinning are ignored
|
||||
#
|
||||
# !!!! If you export an tape and reinsert another one,
|
||||
# !!!! don't forget to change the volume name in this file!
|
||||
#
|
||||
1:Volume1-100
|
||||
2:Volume1-101
|
||||
3:Volume1-102
|
||||
4:Volume1-103
|
||||
5:Volume1-104
|
||||
6:Volume1-105
|
||||
7:Volume1-106
|
||||
8:Volume1-107
|
||||
9:Volume1-108
|
||||
10:Volume1-109
|
||||
11:Volume1-110
|
||||
12:Volume1-111
|
||||
#
|
||||
# Further volumes exported from the changer
|
||||
#
|
||||
# 36GB AIT2 tapes
|
||||
#Volume1-100
|
||||
#Volume1-101
|
||||
#Volume1-102
|
||||
#Volume1-103
|
||||
#Volume1-104
|
||||
#Volume1-105
|
||||
#Volume1-106
|
||||
#Volume1-107
|
||||
#Volume1-108
|
||||
#Volume1-109
|
||||
#Volume1-110
|
||||
#Volume1-111
|
||||
#Volume1-112
|
||||
#Volume1-113
|
||||
#Volume1-114
|
||||
#Volume1-115
|
||||
#
|
||||
# 50GB AIT2 tapes
|
||||
#Volume2-200
|
||||
#Volume2-201
|
||||
#Volume2-202
|
||||
#Volume2-203
|
||||
#Volume2-204
|
||||
@@ -0,0 +1,29 @@
|
||||
#!/bin/sh
|
||||
|
||||
# PROVIDE: bacula_dir
|
||||
# REQUIRE: DAEMON %%REQ_MYSQL%% %%REQ_PGSQL%%
|
||||
# KEYWORD: shutdown
|
||||
#
|
||||
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
|
||||
# to enable this service:
|
||||
#
|
||||
# bacula_dir_enable (bool): Set to NO by default.
|
||||
# Set it to YES to enable bacula_dir.
|
||||
# bacula_dir_flags (params): Set params used to start bacula_dir.
|
||||
#
|
||||
|
||||
. /etc/rc.subr
|
||||
|
||||
name="bacula_dir"
|
||||
rcvar=${name}_enable
|
||||
command=%%PREFIX%%/sbin/bacula-dir
|
||||
|
||||
load_rc_config $name
|
||||
|
||||
: ${bacula_dir_enable="NO"}
|
||||
: ${bacula_dir_flags=" -u bacula -g bacula -v -c %%PREFIX%%/etc/bacula/bacula-dir.conf"}
|
||||
: ${bacula_dir_pidfile="/var/run/bacula-dir.9101.pid"}
|
||||
|
||||
pidfile="${bacula_dir_pidfile}"
|
||||
|
||||
run_rc_command "$1"
|
||||
@@ -0,0 +1,29 @@
|
||||
#!/bin/sh
|
||||
|
||||
# PROVIDE: bacula_fd
|
||||
# REQUIRE: DAEMON
|
||||
# KEYWORD: shutdown
|
||||
#
|
||||
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
|
||||
# to enable this service:
|
||||
#
|
||||
# bacula_fd_enable (bool): Set to NO by default.
|
||||
# Set it to YES to enable bacula_fd.
|
||||
# bacula_fd_flags (params): Set params used to start bacula_fd.
|
||||
#
|
||||
|
||||
. /etc/rc.subr
|
||||
|
||||
name="bacula_fd"
|
||||
rcvar=${name}_enable
|
||||
command=%%PREFIX%%/sbin/bacula-fd
|
||||
|
||||
load_rc_config $name
|
||||
|
||||
: ${bacula_fd_enable="NO"}
|
||||
: ${bacula_fd_flags=" -u root -g wheel -v -c %%PREFIX%%/etc/bacula/bacula-fd.conf"}
|
||||
: ${bacula_fd_pidfile="/var/run/bacula-fd.9102.pid"}
|
||||
|
||||
pidfile="${bacula_fd_pidfile}"
|
||||
|
||||
run_rc_command "$1"
|
||||
@@ -0,0 +1,29 @@
|
||||
#!/bin/sh
|
||||
|
||||
# PROVIDE: bacula_sd
|
||||
# REQUIRE: DAEMON
|
||||
# KEYWORD: shutdown
|
||||
#
|
||||
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
|
||||
# to enable this service:
|
||||
#
|
||||
# bacula_sd_enable (bool): Set to NO by default.
|
||||
# Set it to YES to enable bacula_sd.
|
||||
# bacula_sd_flags (params): Set params used to start bacula_sd.
|
||||
#
|
||||
|
||||
. /etc/rc.subr
|
||||
|
||||
name="bacula_sd"
|
||||
rcvar=${name}_enable
|
||||
command=%%PREFIX%%/sbin/bacula-sd
|
||||
|
||||
load_rc_config $name
|
||||
|
||||
: ${bacula_sd_enable="NO"}
|
||||
: ${bacula_sd_flags=" -u bacula -g bacula -v -c %%PREFIX%%/etc/bacula/bacula-sd.conf"}
|
||||
: ${bacula_sd_pidfile="/var/run/bacula-sd.9103.pid"}
|
||||
|
||||
pidfile="${bacula_sd_pidfile}"
|
||||
|
||||
run_rc_command "$1"
|
||||
@@ -0,0 +1,200 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Bacula interface to FreeBSD chio autoloader command with
|
||||
# multiple drive support
|
||||
# (By Lars Köller, lars+bacula@koellers.net, 2004)
|
||||
#
|
||||
# If you set in your Device resource
|
||||
#
|
||||
# Changer Command = "path-to-this-script/chio-bacula" %c %o %S %a
|
||||
# you will have the following input to this script:
|
||||
#
|
||||
# chio-bacula "changer-device" "command" "slot" "archive-device" "drive-index"
|
||||
# $1 $2 $3 $4 $5
|
||||
# for example:
|
||||
#
|
||||
# chio-bacula /dev/sg0 load 1 /dev/nst0 0 (on a FreeBSD system)
|
||||
#
|
||||
# If you need to to an offline, refer to the drive as $4
|
||||
# e.g. mt -f $f offline
|
||||
#
|
||||
# Many changers need an offline after the unload. Also many
|
||||
# changers need a sleep 60 after the mtx load.
|
||||
#
|
||||
# N.B. If you change the script, take care to return either
|
||||
# the mtx exit code or a 0. If the script exits with a non-zero
|
||||
# exit code, Bacula will assume the request failed.
|
||||
#
|
||||
me=$(basename $0)
|
||||
|
||||
# Debug output, take care this file is writeable for user bacula!
|
||||
#LOG=/var/db/bacula/chio-bacula.log
|
||||
#exec 2>>$LOG
|
||||
#echo "------------------------- $(date) Start $(basename $0) -------------------------" >> $LOG
|
||||
#set -x
|
||||
|
||||
# Debug
|
||||
logger -p user.err "$me $@"
|
||||
|
||||
# This simulates a barcode reader in the changer.
|
||||
# The labes of the virtual barcode reader are located in the BARCODE_FILE
|
||||
SIMULATE_BARCODE=true
|
||||
BARCODE_FILE=/usr/local/etc/bacula/bacula-barcodes
|
||||
MTX=/bin/chio
|
||||
# Set default values (see case statement below for
|
||||
# free mapping of drive index and tape device
|
||||
# We have a double drive Qualstar where drive 1 is the default bacula drive
|
||||
#TAPE=/dev/bacula-tape
|
||||
TAPE=/dev/nrsa0
|
||||
DRIVE=0
|
||||
# Time to wait for (un)loading
|
||||
SLEEP=20
|
||||
|
||||
usage()
|
||||
{
|
||||
echo ""
|
||||
echo "The $me script for bacula"
|
||||
echo "--------------------------------------"
|
||||
echo ""
|
||||
echo "usage: $me <changer-device> <command> [slot] [devicename of tapedrive] [drive index]"
|
||||
echo ""
|
||||
echo "Valid commands:"
|
||||
echo ""
|
||||
echo "unload Unloads a tape into the slot"
|
||||
echo " from where it was loaded."
|
||||
echo "load <slot> Loads a tape from the slot <slot>"
|
||||
echo " (slot-base is calculated to 1 as first slot)"
|
||||
echo "list Lists full storage slots"
|
||||
echo "loaded Gives slot from where the tape was loaded."
|
||||
echo " 0 means the tape drive is empty."
|
||||
echo "slots Gives Number of aviable slots."
|
||||
echo ""
|
||||
echo "Example:"
|
||||
echo " $me /dev/changer load 1 loads a tape from slot 1"
|
||||
echo ""
|
||||
exit 2
|
||||
}
|
||||
|
||||
# The changer device
|
||||
if [ -z "$1" ] ; then
|
||||
usage;
|
||||
else
|
||||
CHANGER=$1
|
||||
fi
|
||||
# The command
|
||||
if [ -z "$2" ] ; then
|
||||
usage;
|
||||
else
|
||||
COMMAND=$2
|
||||
fi
|
||||
# The slot number
|
||||
if [ ! -z "$3" ]; then
|
||||
SLOT=$3
|
||||
# btape fill says "... slot 1 drive 0" :-(
|
||||
if [ "$SLOT" = "slot" ]; then
|
||||
shift
|
||||
SLOT=$3
|
||||
fi
|
||||
fi
|
||||
# Set tape device
|
||||
if [ ! -z "$4" ]; then
|
||||
TAPE=$4
|
||||
fi
|
||||
|
||||
# Here you can map bacula drive number to any tape device
|
||||
# DRIVE is the chio drive number used below by chio!
|
||||
case $5 in
|
||||
0)
|
||||
# First Drive in Changer is Bacula drive
|
||||
DRIVE=0
|
||||
#TAPE=/dev/bacula-tape
|
||||
TAPE=/dev/nrsa0
|
||||
;;
|
||||
1)
|
||||
DRIVE=1
|
||||
#TAPE=/dev/bacula-tape2
|
||||
TAPE=/dev/nrsa1
|
||||
;;
|
||||
esac
|
||||
|
||||
#
|
||||
# Main
|
||||
#
|
||||
case ${COMMAND} in
|
||||
unload)
|
||||
# enable the following line if you need to eject the cartridge
|
||||
mt -f ${TAPE} off
|
||||
sleep 2
|
||||
# if we have a slot, try it
|
||||
if [ ! -z "$SLOT" ]; then
|
||||
${MTX} -f ${CHANGER} move drive ${DRIVE} slot $((${SLOT}-1))
|
||||
exit $?
|
||||
fi
|
||||
# Try other way (works if source element information is valid for drive)
|
||||
${MTX} -f ${CHANGER} return drive ${DRIVE}
|
||||
# If the changer is power cycled with a tape loaded in a drive
|
||||
# we can compute the slot in case of a complete filled magazine, with
|
||||
# one slot free.
|
||||
if [ "$?" != "0" ]; then
|
||||
free_slot=`${MTX} -f ${CHANGER} stat | grep "^slot " | grep -v "FULL" | awk '{print $2}'`
|
||||
free_slot=${free_slot%:}
|
||||
${MTX} -f ${CHANGER} move drive ${DRIVE} slot $free_slot
|
||||
fi
|
||||
;;
|
||||
|
||||
load)
|
||||
${MTX} -f ${CHANGER} move slot $((${SLOT}-1)) drive ${DRIVE}
|
||||
rtn=$?
|
||||
# Increase the sleep time if you have a slow device
|
||||
sleep $SLEEP
|
||||
exit $rtn
|
||||
;;
|
||||
|
||||
list)
|
||||
if [ "${SIMULATE_BARCODE}" = "true" ]; then
|
||||
if [ -f "$BARCODE_FILE" ]; then
|
||||
cat $BARCODE_FILE | grep -v -e "^#" -e "^$"
|
||||
exit 0
|
||||
else
|
||||
echo "Barcode file $BARCODE_FILE missing ... exiting!"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
${MTX} -f ${CHANGER} status | grep "^slot .*: .*FULL>" | awk '{print $2}' | awk -F: '{print $1+1" "}' | tr -d "[\r\n]"
|
||||
fi
|
||||
;;
|
||||
|
||||
loaded)
|
||||
# echo "Request loaded"
|
||||
${MTX} -f ${CHANGER} status -S > /tmp/mtx.$$
|
||||
rtn=$?
|
||||
# Try to get chio slot source from drive entry
|
||||
SLOT=$(cat /tmp/mtx.$$ | grep "^drive ${DRIVE}: <FULL> .*slot" | awk '{print $6+1}' | tr -d ">")
|
||||
if [ -z "$SLOT" ]; then
|
||||
# This handles the case a source slot is not available (power on
|
||||
# of the changer with a drive loaded) and all other slots are
|
||||
# occupied with a tape!
|
||||
SLOT=$(cat /tmp/mtx.$$ | grep "^slot .*: <ACCESS>" | awk '{print $2+1}')
|
||||
if [ -z "$SLOT" ]; then
|
||||
echo 0
|
||||
else
|
||||
echo $SLOT
|
||||
fi
|
||||
else
|
||||
echo $SLOT
|
||||
fi
|
||||
# All tapes are in the slots
|
||||
#cat /tmp/mtx.$$ | grep "^drive ${DRIVE}: .* source: <>" | awk "{print 0}"
|
||||
rm -f /tmp/mtx.$$
|
||||
exit $rtn
|
||||
;;
|
||||
|
||||
slots)
|
||||
# echo "Request slots"
|
||||
${MTX} -f ${CHANGER} status | grep "^slot " | tail -1 | awk '{print $2+1}' | tr -d ":"
|
||||
;;
|
||||
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
@@ -0,0 +1,13 @@
|
||||
--- src/baconfig.h.orig 2021-02-05 21:23:44 UTC
|
||||
+++ src/baconfig.h
|
||||
@@ -45,6 +45,10 @@
|
||||
#define tls_psk_default 0
|
||||
#endif
|
||||
|
||||
+#ifndef ENODATA
|
||||
+#define ENODATA EPIPE
|
||||
+#endif
|
||||
+
|
||||
#ifndef ETIME
|
||||
#define ETIME ETIMEDOUT
|
||||
#endif
|
||||
@@ -0,0 +1,11 @@
|
||||
--- src/console/Makefile.in.orig 2021-02-05 21:23:44 UTC
|
||||
+++ src/console/Makefile.in
|
||||
@@ -128,7 +128,7 @@ uninstall:
|
||||
depend:
|
||||
@$(MV) Makefile Makefile.bak
|
||||
@$(SED) "/^# DO NOT DELETE:/,$$ d" Makefile.bak > Makefile
|
||||
- @$(ECHO) "# DO NOT DELETE: nice dependency list follows" >> Makefile
|
||||
+ @echo "# DO NOT DELETE: nice dependency list follows" >> Makefile
|
||||
@$(CXX) -S -M $(CPPFLAGS) $(CONS_INC) -I$(srcdir) -I$(basedir) *.c >> Makefile
|
||||
@if test -f Makefile ; then \
|
||||
$(RMF) Makefile.bak; \
|
||||
@@ -0,0 +1,11 @@
|
||||
--- src/dird/Makefile.in.orig 2021-02-05 21:23:44 UTC
|
||||
+++ src/dird/Makefile.in
|
||||
@@ -150,7 +150,7 @@ uninstall:
|
||||
depend:
|
||||
@$(MV) Makefile Makefile.bak
|
||||
@$(SED) "/^# DO NOT DELETE:/,$$ d" Makefile.bak > Makefile
|
||||
- @$(ECHO) "# DO NOT DELETE: nice dependency list follows" >> Makefile
|
||||
+ @echo "# DO NOT DELETE: nice dependency list follows" >> Makefile
|
||||
@$(CXX) -S -M $(CPPFLAGS) $(XINC) -I$(srcdir) -I$(basedir) *.c >> Makefile
|
||||
@if test -f Makefile ; then \
|
||||
$(RMF) Makefile.bak; \
|
||||
@@ -0,0 +1,11 @@
|
||||
--- src/filed/Makefile.in.orig 2021-02-24 01:52:05 UTC
|
||||
+++ src/filed/Makefile.in
|
||||
@@ -193,7 +193,7 @@ uninstall:
|
||||
depend:
|
||||
@$(MV) Makefile Makefile.bak
|
||||
@$(SED) "/^# DO NOT DELETE:/,$$ d" Makefile.bak > Makefile
|
||||
- @$(ECHO) "# DO NOT DELETE: nice dependency list follows" >> Makefile
|
||||
+ @echo "# DO NOT DELETE: nice dependency list follows" >> Makefile
|
||||
@$(CXX) -S -M $(CPPFLAGS) $(XINC) $(LZO_INC) $(AFS_CFLAGS) $(GPFS_CFLAGS) -I$(srcdir) -I$(basedir) *.c >> Makefile
|
||||
@if test -f Makefile ; then \
|
||||
$(RMF) Makefile.bak; \
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user