Based on Ubuntu 14.04 Server


Install and Configure Bacula on Ubuntu 14.04_第1张图片

Here is sort of a picture of what names/passwords in which files/Resources must match up:

Install and Configure Bacula on Ubuntu 14.04_第2张图片

Director/Console/Client:

1. vi /etc/hostname
director.test.pri

vi /etc/hosts
#127.0.1.1 ubuntu
192.168.1.15    director.test.pri

2. aptitude -y install mysql-server bacula-director-mysql bacula-console bacula-fd bacula-doc

Install and Configure Bacula on Ubuntu 14.04_第3张图片

Install and Configure Bacula on Ubuntu 14.04_第4张图片



3. vi /etc/bacula/bacula-dir.conf

#
# Default Bacula Director Configuration file
#
#  The only thing that MUST be changed is to add one or more
#   file or directory names in the Include directive of the
#   FileSet resource.
#
#  For Bacula release 5.2.6 (21 February 2012) -- ubuntu 14.04
#
#  You might also want to change the default email address
#   from root to your address.  See the "mail" and "operator"
#   directives in the Messages resource.
#

Director {                            # define myself
  Name = director.test.pri-dir
  DIRport = 9101                # where we listen for UA connections
  QueryFile = "/etc/bacula/scripts/query.sql"
  WorkingDirectory = "/var/lib/bacula"
  PidDirectory = "/var/run/bacula"
  Maximum Concurrent Jobs = 1
  Password = "password-dir"         # Console password
  Messages = Daemon
  DirAddress = 192.168.1.15
}

JobDefs {
  Name = "DefaultJob"
  Type = Backup
  Level = Incremental
  Client = director.test.pri-fd
  FileSet = "Full Set"
  Schedule = "WeeklyCycle"
  Storage = File
  Messages = Standard
  Pool = Backup-File
  Priority = 10
  Write Bootstrap = "/var/lib/bacula/%c.bsr"
}

#
# Define the main nightly save backup job
#   By default, this job will back up to disk in /nonexistant/path/to/file/archive/dir
Job {
  Name = "BackupDirectorMysql"
  JobDefs = "DefaultJob"
}

#Job {
#  Name = "BackupClient2"
#  Client = director.test.pri2-fd
#  JobDefs = "DefaultJob"
#}

# Backup the catalog database (after the nightly save)
Job {
  Name = "BackupCatalog"
  JobDefs = "DefaultJob"
  Level = Full
  FileSet="Catalog"
  Schedule = "WeeklyCycleAfterBackup"
  # This creates an ASCII copy of the catalog
  # Arguments to make_catalog_backup.pl are:
  #  make_catalog_backup.pl
  RunBeforeJob = "/etc/bacula/scripts/make_catalog_backup.pl MyCatalog"
  # This deletes the copy of the catalog
  RunAfterJob  = "/etc/bacula/scripts/delete_catalog_backup"
  Write Bootstrap = "/var/lib/bacula/%n.bsr"
  Priority = 11                   # run after main backup
}

#
# Standard Restore template, to be changed by Console program
#  Only one such job is needed for all Jobs/Clients/Storage ...
#
Job {
  Name = "RestoreFiles"
  Type = Restore
  Client=director.test.pri-fd
  FileSet="Full Set"                  
  Storage = File                      
  Pool = Default
  Messages = Standard
  Where = /tmp/restores
}


# List of files to be backed up
FileSet {
  Name = "Full Set"
  Include {
    Options {
      signature = MD5
      compression = GZIP
    }
#    
#  Put your list of files here, preceded by 'File =', one per line
#    or include an external list with:
#
#    File = #
#  Note: / backs up everything on the root partition.
#    if you have other partitions such as /usr or /home
#    you will probably want to add them too.
#
#  By default this is defined to point to the Bacula binary
#    directory to give a reasonable FileSet to backup to
#    disk storage during initial testing.
#
    File = /var/lib/mysql/bacula
  }

#
# If you backup the root directory, the following two excluded
#   files can be useful
#
  Exclude {
    File = /var/lib/bacula
    File = /nonexistant/path/to/file/archive/dir
    File = /proc
    File = /tmp
    File = /.journal
    File = /.fsck
  }
}

#
# When to do the backups, full backup on first sunday of the month,
#  differential (i.e. incremental since full) every other sunday,
#  and incremental backups other days
Schedule {
  Name = "WeeklyCycle"
  Run = Full 1st sun at 22:05
  Run = Differential 2nd-5th sun at 22:05
  Run = Incremental mon-sat at 22:05

}

# This schedule does the catalog. It starts after the WeeklyCycle
Schedule {
  Name = "WeeklyCycleAfterBackup"
  Run = Full sun-sat at 23:05
}

# This is the backup of the catalog
FileSet {
  Name = "Catalog"
  Include {
    Options {
      signature = MD5
    }
    File = "/var/lib/bacula/bacula.sql"
  }
}

# Client (File Services) to backup
Client {
  Name = director.test.pri-fd
  Address = 192.168.1.15
  FDPort = 9102
  Catalog = MyCatalog
  Password = "password-fd"          # password for FileDaemon
  File Retention = 30 days            # 30 days
  Job Retention = 6 months            # six months
  AutoPrune = yes                     # Prune expired Jobs/Files
}

#
# Second Client (File Services) to backup
#  You should change Name, Address, and Password before using
#
#Client {
#  Name = director.test.pri2-fd
#  Address = localhost2
#  FDPort = 9102
#  Catalog = MyCatalog
#  Password = "_gzGQ9nMJCrqcy2GqcfTBS-AiW-_3kU5m2"         # password for FileDaemon 2
#  File Retention = 30 days            # 30 days
#  Job Retention = 6 months            # six months
#  AutoPrune = yes                     # Prune expired Jobs/Files
#}


# Definition of file storage device
Storage {
  Name = File
# Do not use "localhost" here    
  Address = 192.168.1.16                # N.B. Use a fully qualified name here
  SDPort = 9103
  Password = "password-sd"
  Device = FileStorage
  Media Type = File

}

# Definition of DDS tape storage device
#Storage {
#  Name = DDS-4    
#  Do not use "localhost" here
#  Address = localhost                # N.B. Use a fully qualified name here
#  SDPort = 9103
#  Password = "FLIppBYBl0owLpu6sM187Z2c6Nu0yo_uN"          # password for Storage daemon
#  Device = DDS-4                      # must be same as Device in Storage daemon
#  Media Type = DDS-4                  # must be same as MediaType in Storage daemon
#  Autochanger = yes                   # enable for autochanger device
#}

# Definition of 8mm tape storage device
#Storage {
#  Name = "8mmDrive"
#  Do not use "localhost" here
#  Address = localhost                # N.B. Use a fully qualified name here
#  SDPort = 9103
#  Password = "FLIppBYBl0owLpu6sM187Z2c6Nu0yo_uN"
#  Device = "Exabyte 8mm"
#  MediaType = "8mm"
#}

# Definition of DVD storage device
#Storage {
#  Name = "DVD"
#  Do not use "localhost" here
#  Address = localhost                # N.B. Use a fully qualified name here
#  SDPort = 9103
#  Password = "FLIppBYBl0owLpu6sM187Z2c6Nu0yo_uN"
#  Device = "DVD Writer"
#  MediaType = "DVD"
#}

# Generic catalog service
Catalog {
  Name = MyCatalog
# Uncomment the following line if you want the dbi driver
# dbdriver = "dbi:postgresql"; dbaddress = 127.0.0.1; dbport =  
  dbname = "bacula"; DB Address = ""; dbuser = "bacula"; dbpassword = "mysql"
}

# Reasonable message delivery -- send most everything to email address
#  and to the console
Messages {
  Name = Standard
#
# NOTE! If you send to two email or more email addresses, you will need
#  to replace the %r in the from field (-f part) with a single valid
#  email address in both the mailcommand and the operatorcommand.
#  What this does is, it sets the email address that emails would display
#  in the FROM field, which is by default the same email as they're being
#  sent to.  However, if you send email to more than one address, then
#  you'll have to set the FROM address manually, to a single address.
#  for example, a '[email protected]', is better since that tends to
#  tell (most) people that its coming from an automated source.

#  %c = Client’s name

#  %d = Director’s name

#  %e = Job Exit Status

#  %h = Client address

#  %i = JobId

#  %j = Unique Job id

#  %l = Job Level

#  %n = Job name

#  %r = Recipients

#  %s = Since time

#  %t = Job type (Backup, ...)

#  %v = Volume name (Only on director side)


#
  mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
  operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
  mail = root = all, !skipped            
  operator = root = mount
  console = all, !skipped, !saved
#
# WARNING! the following will create a file that you must cycle from
#          time to time as it will grow indefinitely. However, it will
#          also keep all your messages if they scroll off the console.
#
  append = "/var/log/bacula/bacula.log" = all, !skipped
  catalog = all
}


#
# Message delivery for daemon messages (no job).
Messages {
  Name = Daemon
  mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
  mail = root = all, !skipped            
  console = all, !skipped, !saved
  append = "/var/log/bacula/bacula.log" = all, !skipped
}

# Default pool definition
Pool {
  Name = Default
  Pool Type = Backup
  Recycle = yes                       # Bacula can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 365 days         # one year
}

# File Pool definition
Pool {
  Name = Backup-File
  Pool Type = Backup
  Recycle = yes                       # Bacula can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 365 days         # one year
  Maximum Volume Bytes = 50G          # Limit Volume size to something reasonable
  Maximum Volumes = 100               # Limit number of Volumes in Pool
  Label Format = "${Year}-${Month}-${Day}-${Hour}-${Minute}-Vol"
}


# Scratch pool definition
Pool {
  Name = Scratch
  Pool Type = Backup
}

#
# Restricted console used by tray-monitor to get the status of the director
#
#Console {
#  Name = director.test.pri-mon
#  Password = "YwtsD4l9OkdjN67obn4SSOu0mvam4R7ly"
#  CommandACL = status, .status
#}


vi /etc/bacula/bconsole.conf
#
# Bacula User Agent (or Console) Configuration File
#

Director {
  Name = director.test.pri-dir
  DIRport = 9101
  address = 192.168.1.15
  Password = "password-dir"

}

vi /etc/bacula/bacula-fd.conf

#
# Default  Bacula File Daemon Configuration file
#
#  For Bacula release 5.2.6 (21 February 2012) -- ubuntu 14.04
#
# There is not much to change here except perhaps the
# File daemon Name to
#

#
# List Directors who are permitted to contact this File daemon
#
Director {
  Name = director.test.pri-dir
  Password = "password-fd"

}

#
# Restricted Director, used by tray-monitor to get the
#   status of the file daemon
#
#Director {
#  Name = director.test.pri-mon
#  Password = "kwQyI185fEBa38vuHtT9si_kudzPH5mVP"
#  Monitor = yes
#}


#
# "Global" File daemon configuration specifications
#
FileDaemon {                          # this is me
  Name = director.test.pri-fd
  FDport = 9102                  # where we listen for the director
  WorkingDirectory = /var/lib/bacula
  Pid Directory = /var/run/bacula
  Maximum Concurrent Jobs = 20
  FDAddress = 192.168.1.15
}

# Send all messages except skipped files back to Director
Messages {
  Name = Standard
  director = director.test.pri-dir = all, !skipped, !restored
}


4. chmod 755 /etc/bacula/scripts/delete_catalog_backup

service bacula-director restart

service bacula-fd restart


5. bconsole

autodisplay on

delete pool=File


6. you should reload in bconsole after you change the bacula-dir.conf


Note: using sendemail to send backup report to outside ISP's email, like [email protected]

1. aptitude -y install sendemail

2. vi /etc/bacula/bacula-dir.conf

Messages {
  Name = Standard

  mailcommand = "/usr/bin/sendEmail -s smtp.139.com -xu account-name -xp account-pass -f [email protected] -u \"Bacula: %t %e of %n on %c %l\" -t %r"
  operatorcommand = "/usr/bin/sendEmail -s smtp.139.com -xu account-name -xp account-pass -f [email protected] -u \"Bacula: Intervention needed for %j\" -t %r"
  mail = [email protected] = all, !skipped
  operator = [email protected] = mount


Messages {
  Name = Daemon

  mailcommand = "/usr/bin/sendEmail -s smtp.139.com -xu account-name -xp account-pass -f [email protected] -u \"Bacula daemon message\" -t %r"
  mail = [email protected] = all, !skipped


3. service bacula-director restart

bconsole

reload



Storage:

1. vi /etc/hostname
storage1.test.pri

vi /etc/hosts
#127.0.1.1 ubuntu
192.168.1.16    storage1.test.pri

2. aptitude -y install bacula-sd-mysql


vi /etc/bacula/bacula-sd.conf
#
# Default Bacula Storage Daemon Configuration file
#
#  For Bacula release 5.2.6 (21 February 2012) -- ubuntu 14.04
#
# You may need to change the name of your tape drive
#   on the "Archive Device" directive in the Device
#   resource.  If you change the Name and/or the
#   "Media Type" in the Device resource, please ensure
#   that dird.conf has corresponding changes.
#

Storage {                             # definition of myself
  Name = storage1.test.pri-sd
  SDPort = 9103                  # Director's port      
  WorkingDirectory = "/var/lib/bacula"
  Pid Directory = "/var/run/bacula"
  Maximum Concurrent Jobs = 20
  SDAddress = 192.168.1.16
}

#
# List Directors who are permitted to contact Storage daemon
#
Director {
  Name = director.test.pri-dir
  Password = "password-sd"

}

#
# Restricted Director, used by tray-monitor to get the
#   status of the storage daemon
#
#Director {
#  Name = storage1.test.pri-mon
#  Password = "qwVX5fQeI6ARiSHf8FuQXIHcSAWTmviAY"
#  Monitor = yes
#}


#
# Note, for a list of additional Device templates please
#  see the directory /examples/devices
# Or follow the following link:
#  http://bacula.svn.sourceforge.net/viewvc/bacula/trunk/bacula/examples/devices/
#

#
# Devices supported by this Storage daemon
# To connect, the Director's bacula-dir.conf must have the
#  same Name and MediaType.
#

Device {
  Name = FileStorage
  Media Type = File

  Archive Device = /mybackup/backup
  LabelMedia = yes;                   # lets Bacula label unlabeled media
  Random Access = Yes;
  AutomaticMount = yes;               # when device opened, read it
  RemovableMedia = no;
  AlwaysOpen = no;
}

#
# An autochanger device with two drives
#
#Autochanger {
#  Name = Autochanger
#  Device = Drive-1
#  Device = Drive-2
#  Changer Command = "/etc/bacula/scripts/mtx-changer %c %o %S %a %d"
#  Changer Device = /dev/sg0
#}

#Device {
#  Name = Drive-1                      #
#  Drive Index = 0
#  Media Type = DLT-8000
#  Archive Device = /dev/nst0
#  AutomaticMount = yes;               # when device opened, read it
#  AlwaysOpen = yes;
#  RemovableMedia = yes;
#  RandomAccess = no;
#  AutoChanger = yes
#  #
#  # Enable the Alert command only if you have the mtx package loaded
#  # Note, apparently on some systems, tapeinfo resets the SCSI controller
#  #  thus if you turn this on, make sure it does not reset your SCSI
#  #  controller.  I have never had any problems, and smartctl does
#  #  not seem to cause such problems.
#  #
#  Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
#  If you have smartctl, enable this, it has more info than tapeinfo
#  Alert Command = "sh -c 'smartctl -H -l error %c'"  
#}

#Device {
#  Name = Drive-2                      #
#  Drive Index = 1
#  Media Type = DLT-8000
#  Archive Device = /dev/nst1
#  AutomaticMount = yes;               # when device opened, read it
#  AlwaysOpen = yes;
#  RemovableMedia = yes;
#  RandomAccess = no;
#  AutoChanger = yes
#  # Enable the Alert command only if you have the mtx package loaded
#  Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
#  If you have smartctl, enable this, it has more info than tapeinfo
#  Alert Command = "sh -c 'smartctl -H -l error %c'"  
#}

#
# A Linux or Solaris LTO-2 tape drive
#
#Device {
#  Name = LTO-2
#  Media Type = LTO-2
#  Archive Device = /dev/nst0
#  AutomaticMount = yes;               # when device opened, read it
#  AlwaysOpen = yes;
#  RemovableMedia = yes;
#  RandomAccess = no;
#  Maximum File Size = 3GB
## Changer Command = "/etc/bacula/scripts/mtx-changer %c %o %S %a %d"
## Changer Device = /dev/sg0
## AutoChanger = yes
#  # Enable the Alert command only if you have the mtx package loaded
## Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
## If you have smartctl, enable this, it has more info than tapeinfo
## Alert Command = "sh -c 'smartctl -H -l error %c'"  
#}

#
# A Linux or Solaris LTO-3 tape drive
#
#Device {
#  Name = LTO-3
#  Media Type = LTO-3
#  Archive Device = /dev/nst0
#  AutomaticMount = yes;               # when device opened, read it
#  AlwaysOpen = yes;
#  RemovableMedia = yes;
#  RandomAccess = no;
#  Maximum File Size = 4GB
## Changer Command = "/etc/bacula/scripts/mtx-changer %c %o %S %a %d"
## Changer Device = /dev/sg0
## AutoChanger = yes
#  # Enable the Alert command only if you have the mtx package loaded
## Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
## If you have smartctl, enable this, it has more info than tapeinfo
## Alert Command = "sh -c 'smartctl -H -l error %c'"  
#}

#
# A Linux or Solaris LTO-4 tape drive
#
#Device {
#  Name = LTO-4
#  Media Type = LTO-4
#  Archive Device = /dev/nst0
#  AutomaticMount = yes;               # when device opened, read it
#  AlwaysOpen = yes;
#  RemovableMedia = yes;
#  RandomAccess = no;
#  Maximum File Size = 5GB
## Changer Command = "/etc/bacula/scripts/mtx-changer %c %o %S %a %d"
## Changer Device = /dev/sg0
## AutoChanger = yes
#  # Enable the Alert command only if you have the mtx package loaded
## Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'"
## If you have smartctl, enable this, it has more info than tapeinfo
## Alert Command = "sh -c 'smartctl -H -l error %c'"  
#}

#
# A FreeBSD tape drive
#
#Device {
#  Name = DDS-4
#  Description = "DDS-4 for FreeBSD"
#  Media Type = DDS-4
#  Archive Device = /dev/nsa1
#  AutomaticMount = yes;               # when device opened, read it
#  AlwaysOpen = yes
#  Offline On Unmount = no
#  Hardware End of Medium = no
#  BSF at EOM = yes
#  Backward Space Record = no
#  Fast Forward Space File = no
#  TWO EOF = yes
#  If you have smartctl, enable this, it has more info than tapeinfo
#  Alert Command = "sh -c 'smartctl -H -l error %c'"  
#}

#
# Send all messages to the Director,
# mount messages also are sent to the email address
#
Messages {
  Name = Standard
  director = director.test.pri-dir = all
}


3. mkdir -p /mybackup/backup

chown -R bacula:bacula /mybackup/backup

chmod -R 700 /mybackup/backup


4. service bacula-sd restart


Install Bacula web on Director

1. aptitude -y install apache2 libapache2-mod-php5 php5-mysql php5-gd

vi /etc/php5/apache2/php.ini
date.timezone = Asia/Shanghai

2. cd /var/www/html
wget http://bacula-web.org/download/articles/bacula-web-600.html?file=files/bacula-web.org/downloads/bacula-web-6.0.0.tgz
mv bacula-web-600.html\?file\=files%2Fbacula-web.org%2Fdownloads%2Fbacula-web-6.0.0.tgz bacula-web-600.tgz
tar zxf bacula-web-600.tgz
mv bacula-web-6.0.0 baculaweb

cd baculaweb/application/config/
cp config.php.sample config.php
vi config.php
// MySQL bacula catalog
$config[0]['label'] = 'Backup Server';
$config[0]['host'] = 'localhost';
$config[0]['login'] = 'bacula';
$config[0]['password'] = 'mysql';
$config[0]['db_name'] = 'bacula';
$config[0]['db_type'] = 'mysql';
$config[0]['db_port'] = '3306';

cd ..
cd view/
chmod ug+w cache/

chown -R www-data:www-data /var/www/html/baculaweb/
service apache2 restart

3. http://localhost/baculaweb/index.php



Install and Configure Bacula on Ubuntu 14.04_第5张图片


Backup Bacula Database on Director

1. mysql> CREATE USER 'baculabackup'@'localhost' IDENTIFIED BY 'baculabackup';
mysql> GRANT SELECT, RELOAD, LOCK TABLES ON *.* TO 'baculabackup'@'localhost' IDENTIFIED BY 'baculabackup';
mysql> flush privileges;

2. vi /usr/local/bin/mysqlbackup
#!/bin/bash
DBLIST="bacula" # databases for backing up
DBDIR=/var/lib/bacula/mysql
UP=" -u $1 --password=$2"
LOGFILE=/var/lib/bacula/mysql/backup.log
mkdir -p $DBDIR
for DATABASE in $DBLIST
do
mysqldump -q $UP $DATABASE > ${DBDIR}/$DATABASE
done

chmod +x /usr/local/bin/mysqlbackup

3. vi /etc/bacula/bacula-dir.conf
Job {
  Name = "BackupBaculaDatabase"
  JobDefs = "DefaultJob"
  FileSet = "BaculaDatabase FileSet"
  RunBeforeJob = "/usr/local/bin/mysqlbackup baculabackup baculabackup"
  RunAfterJob = "/bin/rm -rf /var/lib/bacula/mysql"
}

Fileset {
    Name = "BaculaDatabase FileSet"
  Include {
    Options {
          signature = MD5
              compression = GZIP
    }
    File = /var/lib/bacula/mysql
  }
}

4. service bacula-director restart

Backing up a Windows Client - windows server 2012 R2

1. install bacula-win64-5.2.10.exe

Install and Configure Bacula on Ubuntu 14.04_第6张图片

Install and Configure Bacula on Ubuntu 14.04_第7张图片

Install and Configure Bacula on Ubuntu 14.04_第8张图片

Install and Configure Bacula on Ubuntu 14.04_第9张图片



2. edit C:\Program Files\Bacula\bacula-fd.conf

#
# Default  Bacula File Daemon Configuration file
#
#  For Bacula release 5.2.10 (06/28/12) -- Windows MinGW64
#
# There is not much to change here except perhaps the
# File daemon Name
#

#
# "Global" File daemon configuration specifications
#
FileDaemon {                            # this is me
  Name = win2012-fd
  FDport = 9102                # where we listen for the director
  WorkingDirectory = "C:\\Program Files\\Bacula\\working"
  Pid Directory = "C:\\Program Files\\Bacula\\working"
# Plugin Directory = "C:\\Program Files\\Bacula\\plugins"
  Maximum Concurrent Jobs = 10
  FDAddress = 192.168.1.106
}

#
# List Directors who are permitted to contact this File daemon
#
Director {
  Name = director.test.pri-dir
  Password = "password-fd"

}

#
# Restricted Director, used by tray-monitor to get the
#   status of the file daemon
#
#Director {
#  Name = @monitor_name@
#  Password = "@monitor_password@"
#  Monitor = yes
#}


# Send all messages except skipped files back to Director
Messages {
  Name = Standard
  director = director.test.pri-dir = all, !skipped, !restored
}

3. open firewall for TCP port 9102

open services.msc to start Bacula File Backup Service


4. on Director

vi /etc/bacula/bacula-dir.conf

# Windows 2012 Client (File Services) to backup
Client {
  Name = win2012-fd
  Address = 192.168.1.106
  FDPort = 9102
  Catalog = MyCatalog
  Password = "password-fd"          # password for FileDaemon
  File Retention = 30 days            # 30 days
  Job Retention = 6 months            # six months
  AutoPrune = yes                     # Prune expired Jobs/Files
}


you should also define Job/FileSet/Schedule etc for Windows Client


service bacula-director restart


bconsole

status client