To create new wiki account, please join us on #znc at freenode and ask admins to create a wiki account for you. You can say thanks to spambots for this inconvenience.

Difference between revisions of "ZNC Backup"

From ZNC
Jump to: navigation, search
(Backup Script)
m (fix)
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
{{Languages}}
+
{{Languages|ZNC Backup}}
 
Here is described how you can get your ZNC data dir emailed to you once per week.
 
Here is described how you can get your ZNC data dir emailed to you once per week.
  
Line 19: Line 19:
 
  ### Facultatif change :
 
  ### Facultatif change :
 
  DIR=/home/$USER/.znc
 
  DIR=/home/$USER/.znc
  TAR_PATH=`/usr/bin/whereis tar`
+
  TAR_PATH=`whereis tar | cut -d ' ' -f 2`
  7ZA_PATH=`/usr/bin/whereis 7za`
+
  p7zip_PATH=`whereis 7za | cut -d ' ' -f 2`
  SendEmail_PATH=`/usr/bin/whereis sendEmail`
+
  SendEmail_PATH=`whereis sendEmail | cut -d ' ' -f 2`
 
  DATEI1=$(date +%Y-%m-%d)_znc_backup.tar
 
  DATEI1=$(date +%Y-%m-%d)_znc_backup.tar
 
  DATEI2=$(date +%Y-%m-%d)_znc_backup.tar.7z
 
  DATEI2=$(date +%Y-%m-%d)_znc_backup.tar.7z
 
  DATUM=$(date +%Y-%m-%d)
 
  DATUM=$(date +%Y-%m-%d)
 
  sevenzp="a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -mhe=on -p=$PASSWORD"
 
  sevenzp="a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -mhe=on -p=$PASSWORD"
  ### no Change aftere here
+
  ### no Change after here
  if [ ! -x $TAR_PATH ]; then
+
if [ ! -d "$DIR" ]; then echo "You MUST change DIR variable. TAR. Visit: http://wiki.znc.in/index.php?title=ZNC_Backup";  exit 0; fi
  echo "You MUST change TAR_PATH variable. Or install TAR. Visit: http://wiki.znc.in/index.php?title=ZNC_Backup"
+
  if [ ! -x "$TAR_PATH" ]; then echo "You MUST change TAR_PATH variable. Or install TAR. Visit: http://wiki.znc.in/index.php?title=ZNC_Backup"; exit 0; fi
fi
+
  if [ ! -x "$p7zip_PATH" ]; then echo "You MUST change p7zip_PATH variable. Or install p7zip. Visit: http://wiki.znc.in/index.php?title=ZNC_Backup"; exit 0; fi
  if [ ! -x $7ZA_PATH ]; then
+
  if [ ! -x "$SendEmail_PATH" ]; then echo "You MUST change SendEmail_PATH variable. Or install SendEmail. Visit: http://wiki.znc.in/index.php?title=ZNC_Backup"; exit 0; fi
  echo "You MUST change 7ZA_PATH variable. Or install p7zip. Visit: http://wiki.znc.in/index.php?title=ZNC_Backup"
 
fi
 
  if [ ! -x $SendEmail_PATH ]; then
 
  echo "You MUST change SendEmail_PATH variable. Or install SendEmail. Visit: http://wiki.znc.in/index.php?title=ZNC_Backup"
 
fi
 
 
  $TAR_PATH -cvf $DATEI1 $DIR
 
  $TAR_PATH -cvf $DATEI1 $DIR
  $7ZA_PATH $sevenzp $DATEI2 $DATEI1
+
  $p7zip_PATH $sevenzp $DATEI2 $DATEI1
 
  $SendEmail_PATH -f $USER@$YOUREHOST -u ZNC-Backup-$DATUM -m ZNC Backup from $DATUM -a $DATEI2 -t $MAILADRESSE1
 
  $SendEmail_PATH -f $USER@$YOUREHOST -u ZNC-Backup-$DATUM -m ZNC Backup from $DATUM -a $DATEI2 -t $MAILADRESSE1
 
  rm -f $DATEI1 $DATEI2
 
  rm -f $DATEI1 $DATEI2
 +
  
 
These lines should be customized:
 
These lines should be customized:

Latest revision as of 23:11, 16 March 2018

Here is described how you can get your ZNC data dir emailed to you once per week.

Needed Software[edit]

p7zip 
Very high compression ratio file archiver
tar 
A GNU file archiving program (Should be preinstalled virtually everywhere)
SendEmail 
http://caspian.dotconf.net/menu/Software/SendEmail/ (I didn't find this in any linux distro so far)

Backup Script[edit]

After the installation a small script is created in the user's home dir.

vi znc-backup.sh

This should be the content:

#!/bin/bash
### Change this:
USER=znc
PASSWORD=Pa7Sw0r7
MAILADRESSE1=deine{at}email.de
YOUREHOST=MyDomain.org
### Facultatif change :
DIR=/home/$USER/.znc
TAR_PATH=`whereis tar | cut -d ' ' -f 2`
p7zip_PATH=`whereis 7za | cut -d ' ' -f 2`
SendEmail_PATH=`whereis sendEmail | cut -d ' ' -f 2`
DATEI1=$(date +%Y-%m-%d)_znc_backup.tar
DATEI2=$(date +%Y-%m-%d)_znc_backup.tar.7z
DATUM=$(date +%Y-%m-%d)
sevenzp="a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on -mhe=on -p=$PASSWORD"
### no Change after here
if [ ! -d "$DIR" ]; then echo "You MUST change DIR variable. TAR. Visit: http://wiki.znc.in/index.php?title=ZNC_Backup";  exit 0; fi
if [ ! -x "$TAR_PATH" ]; then echo "You MUST change TAR_PATH variable. Or install TAR. Visit: http://wiki.znc.in/index.php?title=ZNC_Backup"; exit 0; fi
if [ ! -x "$p7zip_PATH" ]; then echo "You MUST change p7zip_PATH variable. Or install p7zip. Visit: http://wiki.znc.in/index.php?title=ZNC_Backup"; exit 0; fi
if [ ! -x "$SendEmail_PATH" ]; then echo "You MUST change SendEmail_PATH variable. Or install SendEmail. Visit: http://wiki.znc.in/index.php?title=ZNC_Backup"; exit 0; fi
$TAR_PATH -cvf $DATEI1 $DIR
$p7zip_PATH $sevenzp $DATEI2 $DATEI1
$SendEmail_PATH -f $USER@$YOUREHOST -u ZNC-Backup-$DATUM -m ZNC Backup from $DATUM -a $DATEI2 -t $MAILADRESSE1
rm -f $DATEI1 $DATEI2


These lines should be customized:

USER=
sevenzp= (just the password at the end)
MAILADRESSE1=
/usr/bin/sendEmail -f $USER@your.host

Please notice the line 7za $sevenzp $DATEI2 $DATEI1. With some distros the 7zip binary is called 7z instead of 7za. Change this if appropriate.

If you don't have 1 GB of RAM, you might have to lower the compression rate. This is done with the parameter -mx=X in the sevenzp=...-line. X is the compression rate, which might be between 0 and 9 where 0 means no compression.

Now the script must be made executable:

chmod a+x znc-backup.sh

Now you should test the script manually:

./znc-backup.sh

If everything works fine, we can now set up the crontab entry, else you have to find and fix the error.

Crontab[edit]

You can edit your crontab with this command:

crontab -e

Now add this line somewhere:

40 0  * * 4 cd /home/znc; ./znc-backup.sh >/dev/null 2>&1

My crontab looks like this:

* * * * *   cd /home/znc/znc/bin; ./znc >/dev/null 2>&1
40 0  * * 4 cd /home/znc;         ./znc-backup.sh >/dev/null 2>&1

There is a check if ZNC is still running caried out every minute. The second line starts the backup script once per week on Thursday (4) at 0:40 am (40 0).