Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #FULL System Backup Script of remote system
- INFO="$1"
- RPORT=22
- SSH_CONF="/tmp/null"
- echo -n >$SSH_CONF
- # user:pass@host
- RUSER="`echo $1|cut -d\@ -f1|cut -d: -f1`"
- RPASS="`echo $1|cut -d\@ -f1|cut -d: -f2`"
- RHOST="`echo $1|cut -d\@ -f2|cut -d: -f1`"
- if [ "$RUSER" == "" ] || [ "$RPASS" == "" ] || [ "$RHOST" == "" ]
- then
- echo "USE: $0 user:pass@host[:port]"
- exit 1
- fi
- if [ "`echo $1|cut -d\@ -f2|grep ':'`" != "" ] \
- && [ "`echo $1|cut -d\@ -f2|cut -d: -f2`" != "" ]
- then
- RPORT="`echo $1|cut -d\@ -f2|cut -d: -f2`"
- fi
- SSH_OPT="-F $SSH_CONF -o StrictHostKeyChecking=no -o SendEnv=no -o HashKnownHosts=no"
- SSH_OPT="$SSH_OPT -p $RPORT"
- DATENOW="`date +%Y%m%d-%H%M`"
- #BACKUPDIR="/Backups/full"
- BACKUPDIR="`pwd`"
- #MAXMB="$((1024*10))" #10GB Max partn size, or skip
- MAXMB="$((`df $BACKUPDIR|grep -v '^File'|sed 's/ * / /g'|cut -d\ -f4`/1024))"
- (
- echo
- echo "$0 $* - USER:$RUSER HOST:$RHOST PORT:$RPORT DATE:$DATENOW BACKUPDIR:$BACKUPDIR MAXMB:$MAXMB"
- mkdir -p $BACKUPDIR
- cd $BACKUPDIR
- mkdir -p $RHOST
- cd $RHOST
- echo "Starting `date +%Y%m%d-%H%M` in `pwd`"
- #Get device info
- echo "-Fetching device info"
- sshpass -p $RPASS ssh $SSH_OPT $RUSER@$RHOST "uname -a" | strings > remote_full_backup.tmp.$RHOST.info || exit 1
- #Get list of devices
- #echo "-Fetching list of devices"
- #sshpass -p $RPASS ssh $SSH_OPT $RUSER@$RHOST "fdisk -l 2>>/dev/null || apt-get -y --force-yes install diskdev-cmds >>/dev/null && fdisk -l" | strings > remote_full_backup.tmp.$RHOST.fdisk || exit 1
- #Get list of remote partitions
- echo "-Fetching list of mounted devices"
- sshpass -p $RPASS ssh $SSH_OPT $RUSER@$RHOST "mount" | strings > remote_full_backup.tmp.$RHOST.mounts || exit 1
- #get list of mounted devices
- echo "-Fetching list of mounted device usage"
- sshpass -p $RPASS ssh $SSH_OPT $RUSER@$RHOST "df" | strings > remote_full_backup.tmp.$RHOST.df || exit 1
- echo -n >remote_full_backup.tmp.dosh
- cat remote_full_backup.tmp.$RHOST.mounts | \
- grep -v 'gvfs-fuse-daemon\|tmpfs\|proc\|sys\|procbususb\|sysfs\|udev\|tmpfs\|devpts\|cifs\|^$' | \
- cut -d\ -f1,3 | \
- while read DEV DIR
- do
- if [ "$DEV" == "" ]
- then
- continue
- fi
- echo "DEV:$DEV"
- if [ "$DIR" == "" ]
- then
- echo "DIR:\"$DIR\" -- ERM?"
- exit 1
- continue
- fi
- echo "DIR:$DIR"
- SIZEKB="`cat remote_full_backup.tmp.$RHOST.df|grep \" $DIR\$\"|sed 's/ * / /g'|cut -d\ -f3`"
- # echo "SIZEKB:\"$SIZEKB\""
- SIZE="$(($SIZEKB / 1024))"
- echo "SIZE:${SIZE}MB"
- # echo "DEV:$DEV DIR:$DIR SIZE:$SIZE MB"
- # if [ "$DEV" == "$BACKUP_DEV" ]
- # then
- # echo "--SKIPPING $DEV (is backupdev $BACKUPDEV)"
- # continue
- # fi
- echo "Checking size limit"
- if [ $SIZE -gt $MAXMB ]
- then
- echo "--SKIPPING $DEV -- $SIZE > $MAXMB MB"
- continue
- fi
- XDEV="`basename $DEV`"
- echo "Adding $XDEV ($DEV on $DIR)"
- cat <<EOF >>remote_full_backup.tmp.dosh
- echo "Backing up $XDEV ($DEV on $DIR @ $RHOST"
- sshpass -p $RPASS ssh $SSH_OPT $RUSER@$RHOST "tar --one-file-system -cvzf - -C / $DIR" > $RHOST.$DATENOW.$XDEV.tar.gz 2>> $RHOST.$DATENOW.$XDEV.log
- EOF
- echo "Done."
- echo
- # continue
- done
- echo "-Running backup"
- sh remote_full_backup.tmp.dosh
- #du -ms $HOST.$DATENOW.*.tar
- du -ms *
- #MYDEV="`df -h .|grep -v '^Filesystem\|^$'|cut -d\ -f1`"
- #ISNETFS="`mount|grep \"^$MYDEV\"|grep cifs`"
- #if [ "$ISNETFS" != "" ]
- #then
- # echo "--Not compressing files on $DEV (is backupdev $BACKUPDEV)"
- #else
- # echo "Compressing"
- # bzip2 -9 $RHOST.$DATENOW.*
- #fi
- #if [ "$ISNETFS" != "" ]
- #then
- # echo "--Not compressing files on $DEV (is backupdev $BACKUPDEV)"
- #else
- # echo "Compressing"
- # bzip2 -9 $RHOST.$DATENOW.*
- #fi
- du -ms $RHOST.$DATENOW.*
- #rm remote_full_backup.tmp.*
- rm $SSH_CONF
- echo "Completed `date +%Y%m%d-%H%M`"
- echo
- ) 2>&1 | tee -a remote_full_backup.log
Add Comment
Please, Sign In to add comment