Uživatelské nástroje

Nástroje pro tento web


rsync-zaloh

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

rsync-zaloh [2019/10/15 09:57] (aktuální)
blazek vytvořeno
Řádek 1: Řádek 1:
 +====== Rsync záloh ======
  
 +Spouští rsync na připojený vzdálený adresář přes SSHFS. Dále vyhodnotí úspěšnost a pošle report.
 +
 +<file bash rsync-backup.sh>​
 +#!/bin/bash
 +#
 +# Author: Jiri Blazek (blazek@isn.cz)
 +# App: RSYNC backup from VPS
 +#
 +
 +# absolute path home
 +APH=$(dirname $(readlink -f $0))
 +
 +# sshfs settings
 +SSHFS_PORT=2244
 +SSHFS_FROM="​backupdown@example.com:/"​
 +SSHFS_TO="/​backup/​sshfs-store/"​
 +
 +# rsync settings
 +RSYNC_FROM="/​backup/​sshfs-store/"​
 +RSYNC_TO="/​backup/​store"​
 +
 +# email report content
 +REPORT_RECIPIENT="​blazek@isn.cz"​
 +REPORT_SUBJECT="​[INFO] RSYNC BACKUP (VPS) - success"​
 +REPORT_CONTENT_FILE="​$APH/​report-file.txt"​
 +
 +# report file
 +echo "RSYNC BACKUP (VPS)" > $REPORT_CONTENT_FILE
 +echo ""​ >> $REPORT_CONTENT_FILE
 +
 +# check process
 +IS_ERROR="​0"​
 +
 +function log() {
 + echo $(/bin/date +"​%Y-%m-%d %k:​%M:​%S"​) $@
 +}
 +
 +is_not_mounted()
 +{
 +  RETVAL="​0"​
 +  /bin/mount | /bin/grep $1 1>/​dev/​null 2>/​dev/​null
 +  if [ $? -eq 0 ]; then
 +    RETVAL="​1"​
 +  fi
 +  return $RETVAL
 +}
 +
 +mount_sshfs()
 +{
 +  is_not_mounted $SSHFS_TO
 +  if [ $? -eq 0 ]; then
 +    /​usr/​bin/​sshfs -p $SSHFS_PORT $SSHFS_FROM $SSHFS_TO
 +    if [ $? -eq 0 ]; then
 +      log "​[INFO] directory $SSHFS_TO is mounted"​ | tee -a $REPORT_CONTENT_FILE
 +    else
 +      log "​[ERROR] directory $SSHFS_TO mount failed"​ | tee -a $REPORT_CONTENT_FILE
 +      IS_ERROR="​1"​
 +    fi
 +  else
 +    log "​[WARNING] directory $SSHFS_TO is already mounted"​ | tee -a $REPORT_CONTENT_FILE
 +  fi
 +}
 +
 +umount_sshfs()
 +{
 +  is_not_mounted $SSHFS_TO
 +  if [ $? -eq 1 ]; then
 +    /bin/umount $SSHFS_TO
 +    if [ $? -eq 0 ]; then
 +      log "​[INFO] directory $SSHFS_TO is umounted"​ | tee -a $REPORT_CONTENT_FILE
 +    else
 +      log "​[ERROR] directory $SSHFS_TO umount failed"​ | tee -a $REPORT_CONTENT_FILE
 +      IS_ERROR="​1"​
 +    fi
 +  else
 +    log "​[WARNING] directory $SSHFS_TO is already umounted"​ | tee -a $REPORT_CONTENT_FILE
 +  fi
 +}
 +
 +rsync_backup()
 +{
 +  #/​usr/​bin/​rsync -ae --delete $RSYNC_FROM $RSYNC_TO
 +  /​usr/​bin/​rsync -a $RSYNC_FROM $RSYNC_TO
 +  if [ $? -eq 0 ]; then
 +    log "​[INFO] rsync from $RSYNC_FROM to $RSYNC_TO success"​ | tee -a $REPORT_CONTENT_FILE
 +  else
 +    log "​[ERROR] rsync from $RSYNC_FROM to $RSYNC_TO failed"​ | tee -a $REPORT_CONTENT_FILE
 +    IS_ERROR="​1"​
 +  fi
 +}
 +
 +# mount sshfs, rsync, umount sshfs
 +mount_sshfs
 +if [ $IS_ERROR -eq 0 ]; then
 +  rsync_backup
 +fi
 +umount_sshfs
 +
 +# report
 +echo ""​ >> $REPORT_CONTENT_FILE
 +if [ $IS_ERROR -eq 0 ]; then
 +  echo "RSYNC BACKUP (VPS) = success"​ | tee -a $REPORT_CONTENT_FILE
 +else
 +  echo "RSYNC BACKUP (VPS) = failed"​ | tee -a $REPORT_CONTENT_FILE
 +  REPORT_SUBJECT="​[ERROR] RSYNC BACKUP (VPS) - failed"​
 +fi
 +
 +# send report by e-mail
 +/bin/mail -s "​$REPORT_SUBJECT"​ $REPORT_RECIPIENT < $REPORT_CONTENT_FILE
 +</​file>​
rsync-zaloh.txt · Poslední úprava: 2019/10/15 09:57 autor: blazek