#!/bin/bash

if [ -z "$1" ]
then
  echo "client name absent"
  exit 99
fi
if [ "$2" = "Linux" ]
then
  os="Linux"
else
  if [ "$2" = "Windows" ]
  then
    os="Windows"
  else
    echo "unknown client type"
    exit 99
  fi
fi
if [ "$3" = "workstation" ]
then
  workstation=1
else
  workstation=0
fi

echo "Job {"
echo "  Name = $1"
echo "  # Enabled = No # для временного отключения планирования"
echo "  Type = Backup"
echo "  Level = Full"
echo "  Write Bootstrap = \"/usr/local/bacula/var/$1.bsr\""
echo "  Client = $1-fd"
echo "  FileSet = $1"
echo "  Messages = Standard"
echo "  Pool = $1-monthly"
echo "  Incremental Backup Pool = $1-daily"
echo "  Schedule = $1-year"
echo "  Storage = File-$1"
echo "  Rerun Failed Levels = Yes"
echo "}"

if [ $workstation -eq 1 ]
then
  echo "  Run Script {"
  echo "    Runs When = Before"
  echo "    Runs On Client = No"
  echo "    Fail Job On Error = Yes"
  echo "# не запускать по праздникам"
  echo "    Command = /usr/local/bacula/etc/holiday.sh"
  echo "  }"
  echo "  Reschedule On Error = Yes"
  echo "  Reschedule Interval = 30 minutes"
  echo "  Reschedule Times = 16"
  echo "}"
fi

if [ $os = "Linux" ]
then
  echo "#"
  echo "# клиент под Linux"
  echo "#"
  echo "FileSet {"
  echo "  Name = $1"
  echo "# не делать полное копирование после изменения списка"
  echo "# Ignore FileSet Changes = Yes"
  echo "  Include {"
  echo "    Options {"
  echo "      compression = GZIP"
  echo "      signature = SHA1"
  echo "      onefs = yes"
  echo "      aclsupport = yes"
  echo "      noatime = yes"
  echo "      checkfilechanges = yes"
  echo "    }"
  echo "# каждую файловую систему отдельно"
  echo "    File = /"
  echo "    ..."
  echo "  }"
  echo "  Exclude {"
  echo "    File = /proc"
  echo "    File = /sys"
  echo "    File = /net"
  echo "    File = /media"
  echo "# для devfs"
  echo "#    File = /dev"
  echo "# для прочих"
  echo "    File = /dev/pts"
  echo "    File = /dev/shm"
  echo "    File = /tmp"
  echo "    File = /var/cache/yum"
  echo "    File = /.journal"
  echo "    File = /.fsck"
  echo "    File = /var/lib/nfs/rpc_pipefs"
  echo "    File = /.autofsck"
  echo "    File = /selinux"
  echo "    File = /var/named/chroot/proc"
  echo "    ..."
  echo "  }"
  echo "}"
else
  echo "#"
  echo "# клиент под MS Windows XP/2003"
  echo "#"
  echo "FileSet {"
  echo "  Name = $1"
  echo "# не делать полное копирование после изменения списка"
  echo "# Ignore FileSet Changes = Yes"
  echo "  Enable VSS = Yes"
  echo "  Include {"
  echo "    Options {"
  echo "      compression = GZIP"
  echo "      signature = SHA1"
  echo "      onefs = yes"
  echo "      portable = no"
  echo "      noatime = yes"
  echo "      checkfilechanges = yes"
  echo "      Ignore Case = yes"
  echo "      wildfile = \"*.avi\""
  echo "      wildfile = \"*.wmv\""
  echo "      wildfile = \"*.mp3\""
  echo "      wildfile = \"pagefile.sys\""
  echo "      wildfile = \"hiberfil.sys\""
  echo "      wilddir = \"System Volume Information\""
  echo "      wilddir = \"TEMP\""
  echo "      ..."
  echo "      exclude = yes"
  echo "    }"
  echo "# каждый диск отдельно"
  echo "    File = \"e:/\""
  echo "    ..."
  echo "  }"
  echo "}"
fi

echo "Schedule {"
echo "  Name = $1-year"
echo "  Run = Level=Full Pool=$1-monthly 1st sun at 00:05"
echo "  Run = Level=Full Pool=$1-weekly 2nd-5th sun at 00:05"
echo "  Run = Level=Incremental Pool=$1-daily mon-sat at 00:05"
echo "}"
echo "#Schedule {"
echo "#  Name = $1-year"
echo "#  Run = Level=Full Pool=$1-weekly sun at 00:05"
echo "#  Run = Level=Incremental Pool=$1-daily mon-sat at 00:05"
echo "#}"
echo "Client {"
echo "  Name = $1-fd"
echo "  Address = полное имя или адрес"
echo "  FDPort = 9102"
echo "  Catalog = MyCatalog"
echo "  Password = пароль backup-dir к $1-fd"
echo "  AutoPrune = yes"
echo "# это ограничение на срок хранения сверху, реальный срок задаётся в Pool"
echo "  File Retention = 1 year"
echo "  Job Retention = 1 year"
echo "}"
echo "Storage {"
echo "  Name = File-$1"
echo "# DNS-разрешение происходит на клиенте, не надо вписывать сюда 127.0.0.1!"
echo "  Address = адрес сервера хранения"
echo "  SDPort = 9103"
echo "  Password = пароль backup-dir к backup-sd"
echo "  Device = FileStorage-$1"
echo "  Media Type = File-$1"
echo "}"
echo "Pool {"
echo "  Name = $1-monthly"
echo "  Pool Type = Backup"
echo "  Maximum Volume Jobs = 1"
echo "  Maximum Volume Bytes = 4650000000 # по размеру DVD-R"
echo "  Volume Retention = 1 year"
echo "  AutoPrune = yes"
echo "  RecyclePool = $1-monthly"
echo "  Recycle = yes"
echo "  Recycle Oldest Volume = yes"
echo "  Label Format = \"$1-monthly-\${Year}\${Month:p/2/0/r}\${Day:p/2/0/r}-\${Hour:p/2/0/r}\${Minute:p/2/0/r}\${Second:p/2/0/r}\""
echo "}"
echo "Pool {"
echo "  Name = $1-weekly"
echo "  Pool Type = Backup"
echo "  Maximum Volume Jobs = 1"
echo "  Maximum Volume Bytes = 4650000000 # по размеру DVD-R"
echo "  Volume Retention = 35 days"
echo "  AutoPrune = yes"
echo "  RecyclePool = $1-weekly"
echo "  Recycle = yes"
echo "  Recycle Oldest Volume = yes"
echo "  Label Format = \"$1-weekly-\${Year}\${Month:p/2/0/r}\${Day:p/2/0/r}-\${Hour:p/2/0/r}\${Minute:p/2/0/r}\${Second:p/2/0/r}\""
echo "}"
echo "Pool {"
echo "  Name = $1-daily"
echo "  Pool Type = Backup"
echo "  Volume Use Duration = 6 days 18 hours"
echo "  Maximum Volume Bytes = 4650000000 # по размеру DVD-R"
echo "  Volume Retention = 7 days"
echo "# Volume Retention = 31 days # для восстановления состояния на любой день месяца"
echo "  AutoPrune = yes"
echo "  RecyclePool = $1-daily"
echo "  Recycle = yes"
echo "  Recycle Oldest Volume = yes"
echo "  Label Format = \"$1-daily-\${Year}\${Month:p/2/0/r}\${Day:p/2/0/r}-\${Hour:p/2/0/r}\${Minute:p/2/0/r}\${Second:p/2/0/r}\""
echo "}"

