Advertisement
Guest User

Untitled

a guest
Jul 5th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.90 KB | None | 0 0
  1. #!/bin/bash
  2. #Josh Pirog
  3. #This is a simple backup script
  4. #Creation Date: November 29, 2010
  5. #Last Revision: December 6, 2010
  6.  
  7. #Declare variables
  8.  
  9. HOSTNAME=$( hostname )
  10. DATETIME=$( date '+%Y-%m-%d' )
  11.  
  12. #File to read
  13. BACKUPF=backup.conf
  14.  
  15. #Input variable, translate to all lower case, also directory to match in .conf file
  16. DIRBACKUP=$( tr '[:upper:]' '[:lower:]' <<<"$1" )
  17.  
  18. #Input variable, translate, number of copies
  19. NUMBACKUP=$( tr '[:upper:]' '[:lower:]' <<<"$2" )
  20.  
  21. #Determine which directories are to be backed up
  22. DIRCUT=$( cat $BACKUPF | grep /*:/ | cut -f 1 -d ":" )
  23.  
  24. #Write into a temp file for later usage
  25. echo $DIRCUT > 1_$$_temp
  26.  
  27. #Declare variables from temp file
  28. DIRHOME=$( cut -f 1 -d ' ' 1_*_temp )
  29. DIRCONF=$( cut -f 2 -d ' ' 1_*_temp )
  30.  
  31. #Determine config variables
  32. CONFVAR=$( cat $BACKUPF | grep -v "^#" | grep "\=" | cut -f 2 -d "=" )
  33.  
  34. #Write into a temp file for later usage
  35. echo $CONFVAR > 2_$$_temp
  36.  
  37. #Declare variables from temp file
  38. COMP=$( cut -f 1 -d ' ' 2_*_temp )
  39. EMAIL=$( cut -f 2 -d ' ' 2_*_temp )
  40. BACKUPDIR=$( cut -f 3 -d ' ' 2_*_temp )
  41. TARGTYPE=$( cut -f 4 -d ' ' 2_*_temp )
  42. TARGSERV=$( cut -f 5 -d ' ' 2_*_temp )
  43. TARGFS=$( cut -f 6 -d ' ' 2_*_temp )
  44. USER=$( cut -f 7 -d ' ' 2_*_temp )
  45. PASS=$( cut -f 8 -d ' ' 2_*_temp )
  46.  
  47. if [ ! -d $BACKUPDIR ]
  48.     then
  49.         mkdir /backup
  50. fi
  51.  
  52. if [ ! -d $BACKUPDIR/daily ]
  53.     then
  54.         mkdir /backup/daily
  55. fi
  56.  
  57. if [ ! -d $BACKUPDIR/weekly ]
  58.     then
  59.         mkdir /backup/weekly
  60. fi
  61.  
  62. if [ ! -d $BACKUPDIR/monthly ]
  63.     then
  64.         mkdir /backup/monthly
  65. fi
  66.  
  67. #Display the variable names and what is stored in them
  68. #echo "Directories to be backed up:"
  69. #echo "\$DIRHOME = $DIRHOME"
  70. #echo "\$DIRCONF = $DIRCONF"
  71. #echo ""
  72. #echo "Configuration variables:"
  73. #echo "\$COMP = $COMP"
  74. #echo "\$EMAIL = $EMAIL"
  75. #echo "\$BACKUPDIR = $BACKUPDIR"
  76. #echo "\$TARGTYPE = $TARGTYPE"
  77. #echo "\$TARGSERV = $TARGSERV"
  78. #echo "\$TARGFS = $TARGFS"
  79. #echo "\$USER = $USER"
  80. #echo "\$PASS = $PASS"
  81.  
  82. fHomeBackup()
  83. {
  84.     ACTDIR=$( cat $BACKUPF | grep /*:/ | cut -f 2 -d ":" )
  85.     echo $ACTDIR > 3_$$_temp
  86.     VALDIR=$( cat 3_*_temp | cut -f 1 -d " " )
  87.  
  88.     tar cvf $HOSTNAME\.$DIRHOME\.$DATETIME\.tar $VALDIR
  89.     $COMP $HOSTNAME\.$DIRHOME*.tar
  90.  
  91.     mv $HOSTNAME\.$DIRHOME* $BACKUPDIR\$NUMBACKUP
  92.  
  93.     ls -R $VALDIR > /var/log/backup/$HOSTNAME\.$DIRHOME\.$DATETIME
  94.  
  95. }
  96.  
  97. fConfBackup()
  98. {
  99.     ACTDIR=$( cat $BACKUPF | grep /*:/ | cut -f 2 -d ":"
  100.     echo $ACTDIR > 3_$$_temp
  101.     VALDIR=$( cat 3_*_temp | cut -f 2 -d " " )
  102.    
  103.     tar cvf $HOSTNAME\.$DIRCONF\.$DATETIME\.tar $VALDIR
  104.     $COMP $HOSTNAME\.$DIRCONF*.tar
  105.  
  106.     mv $HOSTNAME\.\$DIRCONF* $BACKUPDIR\$NUMBACKUP
  107.  
  108.     ls -R $VALDIR > /var/log/backup/$HOSTNAME\.$DIRHOME\.DATETIME
  109. }
  110.  
  111. fCronDump()
  112. {
  113.     crontab -l > 4_$$_temp
  114. }
  115.  
  116. case $DIRBACKUP in
  117.  
  118. 'home')
  119.     case $NUMBACKUP in
  120.         'daily')
  121.             fHomeBackup
  122.             fCronDump
  123.             echo "\@daily /home/joshie/pirog.josh.backup.phase3 $DIRBACKUP $NUMBACKUP >> 4_*_temp"
  124.             crontab 4_*_temp
  125.         ;;
  126.  
  127.         'weekly')
  128.             fHomeBackup
  129.             fCronDump
  130.             echo "\@weekly /home/joshie/pirog.josh.backup.phase3 $DIRBACKUP $NUMBACKUP >> 4_*_temp"
  131.             crontab 4_*_temp
  132.         ;;
  133.  
  134.         'monthly')
  135.             fHomeBackup
  136.             fCronDump
  137.             echo "\@monthly /home/joshie/pirog.josh.backup.phase3 $DIRBACKUP $NUMBACKUP >> 4_*_temp"
  138.             crontab 4_*_temp
  139.         ;;
  140.        
  141.         *)
  142.             fHomeBackup
  143.         ;;
  144.  
  145.     esac
  146.  
  147. ;;
  148.  
  149. 'config')
  150.     case $NUMBACKUP in
  151.         'daily')
  152.             fConfBackup
  153.             fCronDump
  154.             echo "\@daily /home/joshie/pirog.josh.backup.phase3 $DIRBACKUP $NUMBACKUP >> 4_*_temp"
  155.             crontab 4_*_temp
  156.         ;;
  157.        
  158.         'weekly')
  159.             fConfBackup
  160.             fCronDump
  161.             echo "\@weekly /home/joshie/pirog.josh.backup.phase3 $DIRBACKUP $NUMBACKUP >> 4_*_temp"
  162.             crontab 4_*_temp
  163.         ;;
  164.  
  165.         'monthly')
  166.             fConfBackup
  167.             fCronDump
  168.             echo "\@monthly /home/joshie/pirog.josh.backup.phase3 $DIRBACKUP $NUMBACKUP >> 4_*_temp"
  169.             crontab 4_*_temp
  170.         ;;
  171.        
  172.         *)
  173.             fConfBackup
  174.         ;;
  175.  
  176.     esac
  177.  
  178. ;;
  179.  
  180. *)
  181.     echo "Please enter a valid directory from the config file."
  182. ;;
  183.  
  184. esac
  185.  
  186. rm *_temp
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement