Guest User

Untitled

a guest
Apr 16th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.78 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #FULL System Backup Script of remote system
  4. INFO="$1"
  5. RPORT=22
  6. SSH_CONF="/tmp/null"
  7. echo -n >$SSH_CONF
  8.  
  9. # user:pass@host
  10. RUSER="`echo $1|cut -d\@ -f1|cut -d: -f1`"
  11. RPASS="`echo $1|cut -d\@ -f1|cut -d: -f2`"
  12. RHOST="`echo $1|cut -d\@ -f2|cut -d: -f1`"
  13. if [ "$RUSER" == "" ] || [ "$RPASS" == "" ] || [ "$RHOST" == "" ]
  14. then
  15. echo "USE: $0 user:pass@host[:port]"
  16. exit 1
  17. fi
  18. if [ "`echo $1|cut -d\@ -f2|grep ':'`" != "" ] \
  19. && [ "`echo $1|cut -d\@ -f2|cut -d: -f2`" != "" ]
  20. then
  21. RPORT="`echo $1|cut -d\@ -f2|cut -d: -f2`"
  22. fi
  23. SSH_OPT="-F $SSH_CONF -o StrictHostKeyChecking=no -o SendEnv=no -o HashKnownHosts=no"
  24. SSH_OPT="$SSH_OPT -p $RPORT"
  25.  
  26. DATENOW="`date +%Y%m%d-%H%M`"
  27. #BACKUPDIR="/Backups/full"
  28. BACKUPDIR="`pwd`"
  29. #MAXMB="$((1024*10))" #10GB Max partn size, or skip
  30. MAXMB="$((`df $BACKUPDIR|grep -v '^File'|sed 's/ * / /g'|cut -d\ -f4`/1024))"
  31. (
  32. echo
  33. echo "$0 $* - USER:$RUSER HOST:$RHOST PORT:$RPORT DATE:$DATENOW BACKUPDIR:$BACKUPDIR MAXMB:$MAXMB"
  34.  
  35. mkdir -p $BACKUPDIR
  36. cd $BACKUPDIR
  37. mkdir -p $RHOST
  38. cd $RHOST
  39.  
  40. echo "Starting `date +%Y%m%d-%H%M` in `pwd`"
  41.  
  42. #Get device info
  43. echo "-Fetching device info"
  44. sshpass -p $RPASS ssh $SSH_OPT $RUSER@$RHOST "uname -a" | strings > remote_full_backup.tmp.$RHOST.info || exit 1
  45.  
  46. #Get list of devices
  47. #echo "-Fetching list of devices"
  48. #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
  49.  
  50. #Get list of remote partitions
  51. echo "-Fetching list of mounted devices"
  52. sshpass -p $RPASS ssh $SSH_OPT $RUSER@$RHOST "mount" | strings > remote_full_backup.tmp.$RHOST.mounts || exit 1
  53.  
  54. #get list of mounted devices
  55. echo "-Fetching list of mounted device usage"
  56. sshpass -p $RPASS ssh $SSH_OPT $RUSER@$RHOST "df" | strings > remote_full_backup.tmp.$RHOST.df || exit 1
  57.  
  58. echo -n >remote_full_backup.tmp.dosh
  59.  
  60. cat remote_full_backup.tmp.$RHOST.mounts | \
  61. grep -v 'gvfs-fuse-daemon\|tmpfs\|proc\|sys\|procbususb\|sysfs\|udev\|tmpfs\|devpts\|cifs\|^$' | \
  62. cut -d\ -f1,3 | \
  63. while read DEV DIR
  64. do
  65. if [ "$DEV" == "" ]
  66. then
  67. continue
  68. fi
  69. echo "DEV:$DEV"
  70. if [ "$DIR" == "" ]
  71. then
  72. echo "DIR:\"$DIR\" -- ERM?"
  73. exit 1
  74. continue
  75. fi
  76. echo "DIR:$DIR"
  77. SIZEKB="`cat remote_full_backup.tmp.$RHOST.df|grep \" $DIR\$\"|sed 's/ * / /g'|cut -d\ -f3`"
  78. # echo "SIZEKB:\"$SIZEKB\""
  79. SIZE="$(($SIZEKB / 1024))"
  80. echo "SIZE:${SIZE}MB"
  81. # echo "DEV:$DEV DIR:$DIR SIZE:$SIZE MB"
  82. # if [ "$DEV" == "$BACKUP_DEV" ]
  83. # then
  84. # echo "--SKIPPING $DEV (is backupdev $BACKUPDEV)"
  85. # continue
  86. # fi
  87. echo "Checking size limit"
  88. if [ $SIZE -gt $MAXMB ]
  89. then
  90. echo "--SKIPPING $DEV -- $SIZE > $MAXMB MB"
  91. continue
  92. fi
  93.  
  94. XDEV="`basename $DEV`"
  95. echo "Adding $XDEV ($DEV on $DIR)"
  96. cat <<EOF >>remote_full_backup.tmp.dosh
  97. echo "Backing up $XDEV ($DEV on $DIR @ $RHOST"
  98. 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
  99. EOF
  100. echo "Done."
  101. echo
  102. # continue
  103. done
  104.  
  105. echo "-Running backup"
  106. sh remote_full_backup.tmp.dosh
  107.  
  108. #du -ms $HOST.$DATENOW.*.tar
  109. du -ms *
  110.  
  111. #MYDEV="`df -h .|grep -v '^Filesystem\|^$'|cut -d\ -f1`"
  112. #ISNETFS="`mount|grep \"^$MYDEV\"|grep cifs`"
  113. #if [ "$ISNETFS" != "" ]
  114. #then
  115. # echo "--Not compressing files on $DEV (is backupdev $BACKUPDEV)"
  116. #else
  117. # echo "Compressing"
  118. # bzip2 -9 $RHOST.$DATENOW.*
  119. #fi
  120. #if [ "$ISNETFS" != "" ]
  121. #then
  122. # echo "--Not compressing files on $DEV (is backupdev $BACKUPDEV)"
  123. #else
  124. # echo "Compressing"
  125. # bzip2 -9 $RHOST.$DATENOW.*
  126. #fi
  127.  
  128. du -ms $RHOST.$DATENOW.*
  129.  
  130. #rm remote_full_backup.tmp.*
  131. rm $SSH_CONF
  132.  
  133. echo "Completed `date +%Y%m%d-%H%M`"
  134. echo
  135.  
  136. ) 2>&1 | tee -a remote_full_backup.log
Add Comment
Please, Sign In to add comment