Import project from sourceforge.net

This commit is contained in:
Wanderlei Hüttel
2016-08-11 08:12:38 -03:00
commit 5a08594ac8
83 changed files with 27069 additions and 0 deletions

2
doc/Makefile.am Normal file
View File

@@ -0,0 +1,2 @@
man8_MANS = vchanger.8
man5_MANS = vchanger.conf.5

509
doc/Makefile.in Normal file
View File

@@ -0,0 +1,509 @@
# Makefile.in generated by automake 1.13.4 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
subdir = doc
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
man5dir = $(mandir)/man5
am__installdirs = "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)"
man8dir = $(mandir)/man8
NROFF = nroff
MANS = $(man5_MANS) $(man8_MANS)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
WINLDADD = @WINLDADD@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
man8_MANS = vchanger.8
man5_MANS = vchanger.conf.5
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu doc/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-man5: $(man5_MANS)
@$(NORMAL_INSTALL)
@list1='$(man5_MANS)'; \
list2=''; \
test -n "$(man5dir)" \
&& test -n "`echo $$list1$$list2`" \
|| exit 0; \
echo " $(MKDIR_P) '$(DESTDIR)$(man5dir)'"; \
$(MKDIR_P) "$(DESTDIR)$(man5dir)" || exit 1; \
{ for i in $$list1; do echo "$$i"; done; \
if test -n "$$list2"; then \
for i in $$list2; do echo "$$i"; done \
| sed -n '/\.5[a-z]*$$/p'; \
fi; \
} | while read p; do \
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; echo "$$p"; \
done | \
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
sed 'N;N;s,\n, ,g' | { \
list=; while read file base inst; do \
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \
fi; \
done; \
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
while read files; do \
test -z "$$files" || { \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \
done; }
uninstall-man5:
@$(NORMAL_UNINSTALL)
@list='$(man5_MANS)'; test -n "$(man5dir)" || exit 0; \
files=`{ for i in $$list; do echo "$$i"; done; \
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
dir='$(DESTDIR)$(man5dir)'; $(am__uninstall_files_from_dir)
install-man8: $(man8_MANS)
@$(NORMAL_INSTALL)
@list1='$(man8_MANS)'; \
list2=''; \
test -n "$(man8dir)" \
&& test -n "`echo $$list1$$list2`" \
|| exit 0; \
echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \
$(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \
{ for i in $$list1; do echo "$$i"; done; \
if test -n "$$list2"; then \
for i in $$list2; do echo "$$i"; done \
| sed -n '/\.8[a-z]*$$/p'; \
fi; \
} | while read p; do \
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; echo "$$p"; \
done | \
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
sed 'N;N;s,\n, ,g' | { \
list=; while read file base inst; do \
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \
fi; \
done; \
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
while read files; do \
test -z "$$files" || { \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \
done; }
uninstall-man8:
@$(NORMAL_UNINSTALL)
@list='$(man8_MANS)'; test -n "$(man8dir)" || exit 0; \
files=`{ for i in $$list; do echo "$$i"; done; \
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir)
tags TAGS:
ctags CTAGS:
cscope cscopelist:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(MANS)
installdirs:
for dir in "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-man
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man: install-man5 install-man8
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-man
uninstall-man: uninstall-man5 uninstall-man8
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
ctags-am distclean distclean-generic distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-man5 install-man8 \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \
uninstall-am uninstall-man uninstall-man5 uninstall-man8
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@@ -0,0 +1,5 @@
# This file contains udev rules for automounting drives assigned to vchanger
#
# Rules for magazine 0 (uuid:7b4526c4-d8e9-48ba-b227-f67f855a0dc7)
ACTION=="add",SUBSYSTEM=="block", ENV{ID_FS_UUID}=="7b4526c4-d8e9-48ba-b227-f67f855a0dc7", RUN+="/usr/libexec/vchanger/vchanger-launch-mount.sh 7b4526c4-d8e9-48ba-b227-f67f855a0dc7"
ACTION=="remove",SUBSYSTEM=="block", ENV{ID_FS_UUID}=="7b4526c4-d8e9-48ba-b227-f67f855a0dc7", RUN+="/usr/libexec/vchanger/vchanger-launch-umount.sh 7b4526c4-d8e9-48ba-b227-f67f855a0dc7"

75
doc/vchanger-example.conf Normal file
View File

@@ -0,0 +1,75 @@
# Example vchanger 1.0.0 config file
#
# Storage Resource Name of the Storage resource defined in bacula-dir.conf
# that is associated with this changer.
# [Default: 'vchanger' ]
#Storage Resource = "vchanger"
#
# User User to run as when invoked by root. This must be the
# owner of the volume files controlled by this changer, and
# so will need to be the same user that bacula-sd runs as.
# [Default: none ]
User = bacula
#
# Group Group to run as when invoked by root. This should be the
# owner group of the volume files controlled by this changer,
# and should also be the default group pf the user that
# bacula-sd runs as.
# [Default: none ]
group = tape
#
# Work Dir Directory where virtual drive and magazine state information
# and symlinks for this changer are stored.
# [Default: /var/spool/vchanger/[StorageResource] ]
#work dir = "/var/spool/vchanger/vcahnger"
#
# Logfile Path to log file for this changer.
# [Default: /var/log/vchanger/[StorageResource].log ]
#logfile = "/var/log/vchanger/vchanger.log"
#
# Log Level Sets the level of detail being logged. An integer value from
# 0-7 is expected, where 7 logs the most detail. The levels
# correspond to LOG_EMERG - LOG_DEBUG. (See man 3 syslog)
# [Default: 3 (LOG_ERR) ]
#log_level = 3
#
# bconsole Sets the path to the bconsole binary that vchanger will run
# in order to send 'update slots' and 'label barcodes' commands
# to Bacula. To disable sending commands to Bacula, set
# bconsole="".
# [Default: "/usr/sbin/bconsole" ]
#bconsole = "/usr/sbin/bconsole"
#
# bconsole config Path to the config file bconsole will use when vchanger
# invokes bconsole. By default, bconsole will be invoked
# without the -c flag.
# [Default: none ]
#bconsole config = /etc/bacula/bconsole.conf
#
# Default Pool Name of the pool that new volumes created by vcahnger
# should be placed into when using bconsole to send a
# 'label barcodes' command.
# [Default: "Scratch" ]
#default pool = "Scratch"
#
# Magazine [Required] Gives the list of magazines known to this changer.
# One or more magazine directives must be specified. A magazine
# may be specified as either a directory path or as the UUID
# of a filesystem partition. A magazine is specified by UUID
# by prefixing the string "UUID:" to the filesystem's UUID.
# For magazines specified by UUID, the mountpoint of the
# filesystem will be queried from the system. Note that vchanger
# does not attempt to mount the filesystem.
# [Default: none ]
#magazine = "uuid:4fcb1422-f15c-4d7a-8a32-a4dcc0af5e00"
#Magazine = "/mnt/backup2"

206
doc/vchanger.8 Normal file
View File

@@ -0,0 +1,206 @@
'\" t
.\" Title: vchanger
.\" Author: Josh Fisher <jfisher@jaybus.com>
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
.\" Date: 06/03/2015
.\" Manual: vchanger Manual
.\" Source: vchanger 1.0.1
.\" Language: English
.\"
.TH "VCHANGER" "8" "06/03/2015" "vchanger 1\&.0\&.1" "vchanger Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
vchanger \- Virtual disk\-based autochanger for Bacula network backup system
.SH "SYNOPSIS"
.sp
\fBvchanger\fR [\fIOptions\fR] config command [slot] [device] [drive]
.sp
\fBvchanger\fR [\fIOptions\fR] config CREATEVOLS mag_ndx count [start]
.sp
\fBvchanger\fR [\fIOptions\fR] config LISTMAGS
.sp
\fBvchanger\fR [\fIOptions\fR] config REFRESH
.SH "DESCRIPTION"
.sp
The \fBvchanger(8)\fR utility is used to emulate and control a virtual autochanger within the Bacula network backup system environment\&. Backup volumes stored on multiple disk filesystems are mapped to a single set of virtual slots, allowing an unlimited number of virtual drives for concurrent backup jobs and easy, unlimited scaling to any size by simply adding additional disks/filesystems,
.sp
Vchanger is primarily deigned for use with removable disk drives\&. Its ability to interact with Bacula and determine removable drive mount points through udev allow for plug\-n\-play operation when attaching and detaching removable disk drives\&.
.sp
The first argument, \fIconfig\fR, is required amd specifies the path to the \fBvchanger\&.conf(5)\fR configuration file of the autochanger to be commanded\&.
.sp
The second argument, \fIcommand\fR, is the Bacula Autochanger Interface command to perform\&.
.sp
The third argument, \fIslot\fR, is required for the LOAD, LOADED, and UNLOAD commands and gives the slot number of the volume to act upon\&.
.sp
The fourth argument, \fIdevice\fR, is required for the LOAD, LOADED, and UNLOAD commands\&. It normally specifies the device node of a tape drive for tape autochangers\&. For vcahnger, it is only required as a place holder, and its value is ignored\&.
.sp
The fifth argument, \fIdrive\fR, is required for the LOAD, LOADED, and UNLOAD commands and gives the zero\-based drive number to act upon\&.
.sp
Vchanger implements the commands defined by the Bacula Autochanger Interface specification\&. The following commands are supported\&.
.PP
\fBLIST\fR
.RS 4
List slots, one line each, in the format slot:label\&.
.RE
.PP
\fBLOAD\fR \fIslot\fR \fIdevice\fR \fIdrive\fR
.RS 4
Load the volume in slot
\fIslot\fR
into drive
\fIdrive\fR\&.
.RE
.PP
\fBLOADED\fR \fIslot\fR \fIdevice\fR \fIdrive\fR
.RS 4
Print the slot number currently loaded into drive
\fIdrive\fR, or print
\fI0\fR
if the drive is unloaded\&.
.RE
.PP
\fBSLOTS\fR
.RS 4
Print the number of slots\&.
.RE
.PP
\fBUNLOAD\fR \fIslot\fR \fIdevice\fR \fIdrive\fR
.RS 4
Unload the volume currently loaded in drive
\fIdrive\fR\&.
.RE
.sp
Vchanger also implements the following undocumented comands
.PP
\fBLISTALL\fR
.RS 4
List drive status followed by slot status, one line for each drive or slot, in the format type:number:status:label, where
\fItype\fR
is D for a drive or S for a slot,
\fInumber\fR
is the drive or slot number,
\fIstatus\fR
is E for empty or F for full, and
\fIlabel\fR
is the volume label (barcode)\&.
.RE
.sp
Additionally, the following extended commands are supported\&.
.PP
\fBCREATEVOLS\fR \fImag_ndx\fR \fIcount\fR \fI[start]\fR
.RS 4
Create
\fIcount\fR
volume files on the magazine indexed by
\fImag_ndx\fR\&. Magazines are directories and/or filesystems that have been defined in the
\fBvchanger(5)\fR
configuration file given by
\fIconfig\fR\&. The magazine index is based on the order in which the Magazine directives appear in the configuration file, where index zero is the first occurrence\&. Optionally,
\fIstart\fR
specifies the minimum integer uniqueness number to append to a prefix string when generating filenames for the created volume files\&. The default is to use a uniqueness number greater than highest number currently used for any volume file on the selected magazine\&.
.RE
.PP
\fBLISTMAGS\fR
.RS 4
List the status of all assigned magazines (directories and filesystems), one per line, in the format mag:count:start:mnt, where
\fImag\fR
is zero\-based index of the magazines specified in configuration file
\fIconfig\fR,
\fIcount\fR
is the number of volume files on that magazine,
\fIstart\fR
is the virtual slot number of the beginning of the range of slots mapped to the magazine\(cqs volume files, and
\fImnt\fR
is the magazine\(cqs directory/mountpoint if mounted, or blank if not currently mounted\&.
.RE
.PP
\fBREFRESH\fR
.RS 4
Refresh state information for the autochanger defined by the configuration file
\fIconfig\fR, issuing an
\fIupdate slots\fR
command to Bacula if required\&.
.RE
.sp
\fBBacula Interaction\fR
.sp
By default, vcahgner will invoke bconsole and issue commands to Bacula when certain operator actions are needed\&. When anything happens that changes the current set of volume files being used, vchanger will invoke bconsole and issue an \fIupdate slots\fR command\&. For example, when the operator attaches a removable drive defined as one of the changer\(cqs magazines, the volume files on the removable drive must be mapped to virtual slots\&. Since the volume\-to\-slot mapping will have changed, Bacula will need to be informed of the change via the \fIupdate slots\fR command\&. The \fBREFRESH\fR command can be invoked to force vchanger to update state info and trigger \fIupdate slots\fR if needed\&.
.sp
Additionally, when new volumes are created with the \fBCREATEVOLS\fR command, vchanger will invoke bconsole and issue a \fIlabel barcodes\fR command to write volume labels on the newly created volume files\&.
.SH "COMMAND LINE OPTIONS"
.PP
\fB\-u, \-\-user\fR=\fIuid\fR
.RS 4
Override the default user to run as when invoked by root\&. The default is normally specified in the configuration file given by
\fIconfig\fR\&.
.RE
.PP
\fB\-g, \-\-group\fR=\fIgid\fR
.RS 4
Override the default group to run as when invoked by root\&. The default is normally specified in the configuration file given by
\fIconfig\fR\&.
.RE
.PP
\fB\-\-pool\fR=\fIpool\fR
.RS 4
Overrides the name of the pool into which volumes created by the CREATEVOLS command will be placed when vchanger is configured to label new volumes by sending Bacula a
\fIlabel barcodes\fR
command\&. The default is given by the
\fIDefault Pool\fR
setting in the configuration file\&.
.RE
.PP
\fB\-l, \-\-label\fR=\fIprefix\fR
.RS 4
Overrides the default volume label prefix when generating names for new volume files created by the CREATEVOLS command\&. The default is
\fIname_ndx\fR, where
\fIname\fR
is the autochanger name and
\fIndx\fR
is the magazine index\&.
.RE
.PP
\fB\-\-help\fR
.RS 4
Displays command help for the vchanger command\&.
.RE
.PP
\fB\-\-version\fR
.RS 4
Displays vchanger version information\&.
.RE
.SH "NOTES"
.sp
See the vchangerHowto\&.html file included in the doc directory of the source distribution for more detailed documentation\&.
.SH "SEE ALSO"
.sp
\fBvchanger\&.conf(5)\fR
.SH "COPYRIGHT"
.sp
Copyright 2006\-2015 Josh Fisher
.sp
This is free software; See the source for copying conditions\&. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\&.
.SH "AUTHOR"
.PP
\fBJosh Fisher\fR <\&jfisher@jaybus\&.com\&>
.RS 4
Author.
.RE

180
doc/vchanger.8.asciidoc Normal file
View File

@@ -0,0 +1,180 @@
VCHANGER(8)
===========
Josh Fisher <jfisher@jaybus.com>
:doctype: manpage
:man source: vchanger
:man version: 1.0.1
:man manual: vchanger Manual
NAME
----
vchanger - Virtual disk-based autochanger for Bacula network backup system
SYNOPSIS
--------
*vchanger* ['Options'] config command [slot] [device] [drive]
*vchanger* ['Options'] config CREATEVOLS mag_ndx count [start]
*vchanger* ['Options'] config LISTMAGS
*vchanger* ['Options'] config REFRESH
DESCRIPTION
-----------
The *vchanger(8)* utility is used to emulate and control a virtual
autochanger within the Bacula network backup system environment.
Backup volumes stored on multiple disk filesystems are mapped to a
single set of virtual slots, allowing an unlimited number of virtual
drives for concurrent backup jobs and easy, unlimited scaling to any
size by simply adding additional disks/filesystems,
Vchanger is primarily deigned for use with removable disk drives. Its
ability to interact with Bacula and determine removable drive mount
points through udev allow for plug-n-play operation when attaching
and detaching removable disk drives.
The first argument, 'config', is required amd specifies the path to the
*vchanger.conf(5)* configuration file of the autochanger to be
commanded.
The second argument, 'command', is the Bacula Autochanger Interface command
to perform.
The third argument, 'slot', is required for the LOAD, LOADED, and UNLOAD
commands and gives the slot number of the volume to act upon.
The fourth argument, 'device', is required for the LOAD, LOADED, and UNLOAD
commands. It normally specifies the device node of a tape drive for tape
autochangers. For vcahnger, it is only required as a place holder, and its
value is ignored.
The fifth argument, 'drive', is required for the LOAD, LOADED, and UNLOAD
commands and gives the zero-based drive number to act upon.
Vchanger implements the commands defined by the Bacula Autochanger
Interface specification. The following commands are supported.
*LIST*::
List slots, one line each, in the format slot:label.
*LOAD* 'slot' 'device' 'drive'::
Load the volume in slot 'slot' into drive 'drive'.
*LOADED* 'slot' 'device' 'drive'::
Print the slot number currently loaded into drive 'drive', or print
'0' if the drive is unloaded.
*SLOTS*::
Print the number of slots.
*UNLOAD* 'slot' 'device' 'drive'::
Unload the volume currently loaded in drive 'drive'.
Vchanger also implements the following undocumented comands
*LISTALL*::
List drive status followed by slot status, one line for each
drive or slot, in the format type:number:status:label, where
'type' is D for a drive or S for a slot, 'number' is the drive
or slot number, 'status' is E for empty or F for full, and
'label' is the volume label (barcode).
Additionally, the following extended commands are supported.
*CREATEVOLS* 'mag_ndx' 'count' '[start]'::
Create 'count' volume files on the magazine indexed by 'mag_ndx'.
Magazines are directories and/or filesystems that have been
defined in the *vchanger(5)* configuration file given by 'config'.
The magazine index is based on the order in which the Magazine
directives appear in the configuration file, where index zero is
the first occurrence. Optionally, 'start' specifies the minimum
integer uniqueness number to append to a prefix string when
generating filenames for the created volume files. The default
is to use a uniqueness number greater than highest number
currently used for any volume file on the selected magazine.
*LISTMAGS*::
List the status of all assigned magazines (directories and
filesystems), one per line, in the format mag:count:start:mnt,
where 'mag' is zero-based index of the magazines specified in
configuration file 'config', 'count' is the number of volume
files on that magazine, 'start' is the virtual slot number
of the beginning of the range of slots mapped to the magazine's
volume files, and 'mnt' is the magazine's directory/mountpoint
if mounted, or blank if not currently mounted.
*REFRESH*::
Refresh state information for the autochanger defined by the
configuration file 'config', issuing an 'update slots' command to
Bacula if required.
*Bacula Interaction*
By default, vcahgner will invoke bconsole and issue commands to Bacula
when certain operator actions are needed. When anything happens that
changes the current set of volume files being used, vchanger will
invoke bconsole and issue an 'update slots' command. For example,
when the operator attaches a removable drive defined as one of the
changer's magazines, the volume files on the removable drive must be
mapped to virtual slots. Since the volume-to-slot mapping will have
changed, Bacula will need to be informed of the change via the
'update slots' command. The *REFRESH* command can be invoked to force
vchanger to update state info and trigger 'update slots' if needed.
Additionally, when new volumes are created with the *CREATEVOLS* command,
vchanger will invoke bconsole and issue a 'label barcodes' command to
write volume labels on the newly created volume files.
COMMAND LINE OPTIONS
--------------------
*-u, --user*='uid'::
Override the default user to run as when invoked by root. The default
is normally specified in the configuration file given by 'config'.
*-g, --group*='gid'::
Override the default group to run as when invoked by root. The default
is normally specified in the configuration file given by 'config'.
*--pool*='pool'::
Overrides the name of the pool into which volumes created by the
CREATEVOLS command will be placed when vchanger is configured to
label new volumes by sending Bacula a 'label barcodes' command. The
default is given by the 'Default Pool' setting in the configuration
file.
*-l, --label*='prefix'::
Overrides the default volume label prefix when generating names for
new volume files created by the CREATEVOLS command. The default is
'name_ndx', where 'name' is the autochanger name and 'ndx' is the
magazine index.
*--help*::
Displays command help for the vchanger command.
*--version*::
Displays vchanger version information.
NOTES
-----
See the vchangerHowto.html file included in the doc directory of the
source distribution for more detailed documentation.
SEE ALSO
--------
*vchanger.conf(5)*
COPYRIGHT
---------
Copyright 2006-2015 Josh Fisher
This is free software;
See the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

145
doc/vchanger.conf.5 Normal file
View File

@@ -0,0 +1,145 @@
'\" t
.\" Title: vchanger.conf
.\" Author: Josh Fisher <jfisher@jaybus.com>
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
.\" Date: 06/03/2015
.\" Manual: vchanger Manual
.\" Source: vchanger.conf 1.0.1
.\" Language: English
.\"
.TH "VCHANGER\&.CONF" "5" "06/03/2015" "vchanger\&.conf 1\&.0\&.1" "vchanger Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
vchanger.conf \- configuration file for *vchanger(8)*
.SH "SYNOPSIS"
.sp
/etc/vchanger/vchanger\&.conf
.SH "DESCRIPTION"
.sp
\fBvchanger(8)\fR is passed the path to a configuration file as its first positional parameter\&. The file contains keyword\-value pairs, specified by the free\-form syntax \fIkeyword\fR = \fIvalue\fR\&. Keywords are case\-insensitive and embedded whitespace is ignored\&. For example, "LOGLEVEL" is equivalent to "Log Level"\&. Values are case\-sensitive and embedded whitespace is preserved, however leading and trailing whitespace is ignored\&. Values may be one of the following types:
.PP
BOOLEAN
.RS 4
The case insensitive strings "true", "yes", and "1" are accepted as a true value, and "false", "no", and "0" as a false value\&.
.RE
.PP
INTEGER
.RS 4
A numeric integer value
.RE
.PP
PATH
.RS 4
A filesystem path\&. If the path does not begin with a
\fI\*(Aq/\fR\*(Aq character, then the path is considered a relative path\&. The directory to which the path is relative is described for the relevant keyword in the
\fBCONFIGURATION SETTINGS\fR
section\&.
.RE
.PP
STRING
.RS 4
A text string\&. The string may be enclosed in double quotes\&. A quoted string may also contain escape sequences\&. An escape sequence begins with the back slash character \(oq\e\(cq\&. Valid escape sequences are \ea, \eb, \en, \er, \et, \ev, \e\e, and \e", and are interpreted as in the C language\&.
.RE
.SH "CONFIGURATION SETTINGS"
.PP
\fBbconsole\fR = \fIPATH\fR
.RS 4
Specifies the path to the bconsole utility used to interface with the Bacula console\&. If given as a relative path, standard shell path search semantics apply\&. Specifying the empty string "" disables the sending of commands to Bacula\&. The default is "bconsole"\&.
.RE
.PP
\fBbconsole config\fR = \fIPATH\fR
.RS 4
Specifies the path to the bconsole configuration file to use when invoking bconsole\&. The path is passed to bconsole using its \-c flag\&. If the empty string "" is specified, then bconsole is invoked without the \-c flag\&. The default is ""\&.
.RE
.PP
\fBDefault Pool\fR = \fISTRING\fR
.RS 4
Specifies the name of the pool into which newly created volumes should be placed when labeling the new volumes via bconsole\&. The default is "Scratch"\&.
.RE
.PP
\fBGroup\fR = \fISTRING\fR
.RS 4
Specifies the group that
\fBvchanger(8)\fR
should run as when invoked by the root user\&. The default \-s "tape"\&.
.RE
.PP
\fBLogfile\fR = \fIPATH\fR
.RS 4
Specifies the path to the vchanger logfile\&. If a relative path is specified, then it is relative to the directory defined by the
\fBWork Dir\fR
keyword\&. The default is a file name that is the string "\&.conf" appended to the value of the
\fIStorage Resource\fR
keyword in the
\fIWork Dir\fR
directory\&.
.RE
.PP
\fBLog Level\fR = \fIINTEGER\fR
.RS 4
Specifies the amount of logging desired\&. The value is an integer between 0 and 7, inclusive, corresponding to the LOG_EMERG through LOG_DEBUG log levels defined in
\fBsyslog(3)\fR\&.
.RE
.PP
\fBMagazine\fR = (\fIPATH\fR or \fISTRING\fR)
.RS 4
Specifies a directory or file system that contains volume files that the changer specified by the
\fBStorage Resource\fR
keyword may use\&. this keyword may appear more than once in the configuration file in order to specify multiple magazines\&. Mounted file systems may be specified by prepending the string "UUID:" (case insensitive) to the UUID of the file system\&. Otherwise, the value specifies the path to a directory\&.
.RE
.PP
\fBStorage Resource\fR = \fISTRING\fR
.RS 4
Specifies the name of the Storage resource, defined in the Bacula Director daemon\*(Aq\*(Aqs configuration file (bacula\-dir\&.conf), that is associated with this changer\&. The default is "vchanger"\&.
.RE
.PP
\fBUser\fR = \fISTRING\fR
.RS 4
Specifies the user that
\fBvchanger(8)\fR
should run as when invoked by the root user\&. The default is "bacula"\&.
.RE
.PP
\fBWork Dir\fR = \fIPATH\fR
.RS 4
Specifies the path to the work directory
\fBvchanger(8)\fR
will use for this changer\&. The default is a sub\-directory of /var/spool/vchanger named as the value of the
\fBStorage Resource\fR
keyword\&.
.RE
.SH "NOTES"
.sp
See the vchangerHowto\&.html file included in the doc directory of the source distribution for more detailed documentation\&.
.SH "SEE ALSO"
.sp
\fBvchanger(8)\fR
.SH "COPYRIGHT"
.sp
Copyright 2006\-2015 Josh Fisher
.sp
This is free software; See the source for copying conditions\&. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE\&.
.SH "AUTHOR"
.PP
\fBJosh Fisher\fR <\&jfisher@jaybus\&.com\&>
.RS 4
Author.
.RE

View File

@@ -0,0 +1,120 @@
VCHANGER.CONF(5)
================
Josh Fisher <jfisher@jaybus.com>
:doctype: manpage
:man source: vchanger.conf
:man version: 1.0.1
:man manual: vchanger Manual
NAME
----
vchanger.conf - configuration file for *vchanger(8)*
SYNOPSIS
--------
/etc/vchanger/vchanger.conf
DESCRIPTION
-----------
*vchanger(8)* is passed the path to a configuration file as its first
positional parameter. The file contains keyword-value pairs, specified
by the free-form syntax 'keyword' = 'value'. Keywords are case-insensitive
and embedded whitespace is ignored. For example, "LOGLEVEL" is equivalent
to "Log Level". Values are case-sensitive and embedded whitespace is
preserved, however leading and trailing whitespace is ignored. Values
may be one of the following types:
BOOLEAN::
The case insensitive strings "true", "yes", and "1" are accepted
as a true value, and "false", "no", and "0" as a false value.
INTEGER::
A numeric integer value
PATH::
A filesystem path. If the path does not begin with a ''/'' character,
then the path is considered a relative path. The directory to
which the path is relative is described for the relevant keyword
in the *CONFIGURATION SETTINGS* section.
STRING::
A text string. The string may be enclosed in double quotes. A
quoted string may also contain escape sequences. An escape
sequence begins with the back slash character `\'. Valid escape
sequences are \a, \b, \n, \r, \t, \v, \\, and \", and are
interpreted as in the C language.
CONFIGURATION SETTINGS
----------------------
*bconsole* = 'PATH'::
Specifies the path to the bconsole utility used to interface with
the Bacula console. If given as a relative path, standard shell
path search semantics apply. Specifying the empty string "" disables
the sending of commands to Bacula. The default is "bconsole".
*bconsole config* = 'PATH'::
Specifies the path to the bconsole configuration file to use when
invoking bconsole. The path is passed to bconsole using its -c
flag. If the empty string "" is specified, then bconsole is invoked
without the -c flag. The default is "".
*Default Pool* = 'STRING'::
Specifies the name of the pool into which newly created volumes
should be placed when labeling the new volumes via bconsole.
The default is "Scratch".
*Group* = 'STRING'::
Specifies the group that *vchanger(8)* should run as when invoked
by the root user. The default -s "tape".
*Logfile* = 'PATH'::
Specifies the path to the vchanger logfile. If a relative path is
specified, then it is relative to the directory defined by the
*Work Dir* keyword. The default is a file name that is the string
".conf" appended to the value of the 'Storage Resource' keyword in
the 'Work Dir' directory.
*Log Level* = 'INTEGER'::
Specifies the amount of logging desired. The value is an integer
between 0 and 7, inclusive, corresponding to the LOG_EMERG through
LOG_DEBUG log levels defined in *syslog(3)*.
*Magazine* = ('PATH' or 'STRING')::
Specifies a directory or file system that contains volume files that
the changer specified by the *Storage Resource* keyword may use. this
keyword may appear more than once in the configuration file in order
to specify multiple magazines. Mounted file systems may be specified
by prepending the string "UUID:" (case insensitive) to the UUID of
the file system. Otherwise, the value specifies the path to a
directory.
*Storage Resource* = 'STRING'::
Specifies the name of the Storage resource, defined in the Bacula
Director daemon''s configuration file (bacula-dir.conf), that is
associated with this changer. The default is "vchanger".
*User* = 'STRING'::
Specifies the user that *vchanger(8)* should run as when invoked
by the root user. The default is "bacula".
*Work Dir* = 'PATH'::
Specifies the path to the work directory *vchanger(8)* will use for
this changer. The default is a sub-directory of /var/spool/vchanger
named as the value of the *Storage Resource* keyword.
NOTES
-----
See the vchangerHowto.html file included in the doc directory of the
source distribution for more detailed documentation.
SEE ALSO
--------
*vchanger(8)*
COPYRIGHT
---------
Copyright 2006-2015 Josh Fisher
This is free software;
See the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

1845
doc/vchangerHowto.html Normal file

File diff suppressed because it is too large Load Diff