Guest User

Untitled

a guest
Jul 17th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.62 KB | None | 0 0
  1. #! /bin/sh
  2. # asterisk-monitor-backup:
  3. # tomasz at skrynnyk.pl
  4. #
  5. # echo '10 3 1 * * root test -x /usr/local/sbin/asterisk-monitor-backup && /usr/local/sbin/asterisk-monitor-backup' >/etc/cron.d/asterisk-monitor-backup
  6. #
  7.  
  8. DELETE_FILE_AFTER_BACKUP=1
  9. COMPRESS=tar # tar, zip
  10. CONVERT=mp3 # mp3
  11. VERBOSE=3 # 0 = errors, 1 = info, 2 = more info, ...
  12. LOG2SYSLOG=0
  13. LOG2FILE=1
  14.  
  15. CP=`which cp` || exit 125
  16. TAR=`which tar` || exit 125
  17. ZIP=`which zip` || exit 125
  18. LAME=`which lame` || exit 125
  19. LOGGER=`which logger` || exit 125
  20.  
  21. CP_PARAM='-apr'
  22. TAR_PARAM='' # --total
  23. ZIP_PARAM='-q'
  24. LAME_PARAM='--quiet -m m --resample 16'
  25.  
  26. PROGNAME=`basename $0`
  27.  
  28. SRCDIR=/var/spool/asterisk/monitor
  29. BACKUPDIR=/var/backup/monitor
  30.  
  31. LOCKFILE=/var/lock/$PROGNAME.lock
  32. LOGFILE=/var/log/$PROGNAME.log
  33.  
  34. # ------------------------------------------------------------------------------
  35.  
  36. _echo() {
  37. if [ $2 -le $VERBOSE ]; then
  38. [ $LOG2SYSLOG -eq 1 ] && $LOGGER -t $PROGNAME -i $1
  39. [ $LOG2FILE -eq 1 ] && echo -e "`date '+%F %X'` $PROGNAME[$$]:" $1
  40. fi
  41. }
  42.  
  43. _exit() {
  44. _echo "$1" 0
  45. _echo 'Bye' 0
  46. exit $2
  47. }
  48.  
  49. ami_root() {
  50. if [ `id -u` -ne 0 ]; then
  51. _echo 'Sorry, must be root.' 0
  52. exit 1
  53. fi
  54. }
  55.  
  56. clean_up() {
  57. _echo "Cleaning up..." 1
  58. _echo "rm $TMPDIR" 2
  59. rm -rf $TMPDIR
  60. _echo "rm $LOCKFILE" 2
  61. rm -f $LOCKFILE
  62. }
  63. convert2any() {
  64. DIR=$1
  65. _echo "Converting..." 1
  66. case $CONVERT in
  67. mp3)
  68. ls $DIR | while read i; do
  69. _echo "Converting $i to $CONVERT" 2
  70. FNAME=`basename $i .wav`
  71. $LAME $LAME_PARAM \
  72. --tt $FNAME \
  73. --tg speech \
  74. $DIR/$FNAME.wav $DIR/$FNAME.mp3
  75.  
  76. [ "$?" -eq 0 ] && rm $DIR/$FNAME.wav
  77. done
  78. ;;
  79. *)
  80. _echo "CONVERT: unknown value" 0
  81. ;;
  82. esac
  83. }
  84.  
  85. compress_dir() {
  86. RET=255
  87. cd $1/$2
  88. _echo "Compressing $1/$2" 1
  89. case $COMPRESS in
  90. tar)
  91. $TAR $TAR_PARAM -zcf ../$2.tar.gz ./ 2>&1
  92. RET=$?
  93. ;;
  94. zip)
  95. $ZIP $ZIP_PARAM ../$2.zip .
  96. RET=$?
  97. ;;
  98. *)
  99. _echo "COMPRESS: unknown value" 0
  100. ;;
  101. esac
  102. cd - 1>/dev/null
  103. [ "$RET" -eq 0 ] && rm -r $1/$2
  104. }
  105.  
  106. mvall2backupdir() {
  107. _echo "Copying archives to $BACKUPDIR" 1
  108. $CP $CP_PARAM $TMPDIR/* $BACKUPDIR
  109. }
  110.  
  111. # ------------------------------------------------------------------------------
  112. # MAIN
  113.  
  114. ami_root
  115.  
  116. {
  117. _echo 'Welcome' 0
  118.  
  119. [ -f $LOCKFILE ] && _exit "$LOCKFILE exists, exiting..." 1
  120.  
  121. echo $$ >$LOCKFILE
  122.  
  123. TMPDIR=`mktemp -q -d $TESTDIR/tmp/$PROGNAME.XXXXXXXX`
  124.  
  125. [ -z $TMPDIR ] && _exit "Can't create temp directory, exiting..." 1
  126.  
  127. [ -d $BACKUPDIR ] || (mkdir -p $BACKUPDIR || _exit "Can't create backup directory, exiting..." 1)
  128.  
  129. cd $SRCDIR
  130.  
  131. YEAR="`date -d '-2 month' +%Y`"
  132. MONTH="`date -d '-2 month' +%m`"
  133.  
  134. #for m in `seq -f '%02g' 11`; do
  135. for m in $MONTH; do
  136. MCDIR=$TMPDIR/$YEAR/$m
  137. for d in `seq -f '%02g' 31`; do
  138. _echo "$YEAR/$m/$d" 3
  139. find . -type f -name "*$YEAR$m$d*.wav" \
  140. | while read fn; do
  141. [ -d $MCDIR/$d ] || mkdir -p $MCDIR/$d
  142. _echo "Copying $fn to $MCDIR/$d" 2
  143. $CP $CP_PARAM $fn $MCDIR/$d
  144. if [ $DELETE_FILE_AFTER_BACKUP -eq 1 ]; then
  145. _echo "Removing $fn" 2
  146. rm $fn
  147. fi
  148. done
  149. if [ -d $MCDIR/$d ]; then
  150. [ -n "$CONVERT" ] && convert2any $MCDIR/$d
  151. [ -n "$COMPRESS" ] && compress_dir $MCDIR $d
  152. fi
  153. done
  154. done
  155.  
  156. [ -d "$MCDIR" ] && mvall2backupdir
  157.  
  158. clean_up
  159.  
  160. _echo 'Bye' 0
  161. } >> $LOGFILE
  162.  
  163. # EOF
Add Comment
Please, Sign In to add comment