47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| # Authors: Marcello Torchio, Will Bradley
 | |
| # https://github.com/zyphlar/backup-rotation-script
 | |
| 
 | |
| # Set the directory name that you wish to backup
 | |
| DIRTOBACKUP=$1
 | |
| 
 | |
| # Set up the backup destination directory
 | |
| BACKUPDIRDEST=$2
 | |
| 
 | |
| # Set up the number of days for backup rotation (archives older than these # of days ago will be deleted)
 | |
| NUMDAYS=7;
 | |
| 
 | |
| # Check for input / help / usage
 | |
| if [ -z "$2" ]
 | |
|   then
 | |
|     echo "Usage: ./rotate.sh source_folder destination_folder"
 | |
| else
 | |
| 
 | |
|   # Start logging
 | |
|   echo "["$(date)"] - Started Backup"
 | |
|   # Check if the destination dir exists. If not create it
 | |
|   if [ ! -d "$BACKUPDIRDEST/"$(date +"%m-%d-%Y")"/" ]; then
 | |
|       # Creates directory for today's backup
 | |
|       mkdir $BACKUPDIRDEST/"$(date +"%m-%d-%Y")"
 | |
|   fi
 | |
| 
 | |
|   # Echo the log line.
 | |
|   echo "["$(date)"] - Backup directory $DIRTOBACKUP in $BACKUPDIRDEST/"$(date +"%m-%d-%Y")"/"
 | |
|   # Execute the backup command. This backup consist in a recursive copy of the source dir into destination dir
 | |
|   cp -R $DIRTOBACKUP $BACKUPDIRDEST/"$(date +"%m-%d-%Y")"/
 | |
| 
 | |
|   TOTMB=$(du $BACKUPDIRDEST/"$(date +"%m-%d-%Y")"/ -hs)
 | |
|   echo "["$(date)"] - Finished Backup - $TOTMB Copied"
 | |
| 
 | |
|   # Search for folders older than NUMDAYS days and remove them. This makes possible rotation of backups
 | |
|   if [ "$BACKUPDIRDEST" != "" ]; then
 | |
|     for i in `find $BACKUPDIRDEST/ -maxdepth 1 -type d -mtime +$NUMDAYS -print`;
 | |
|     do
 | |
|         echo -e "["$(date)"] - Found backup folder from $(stat -c %y $i)! Deleting directory $i";
 | |
|         #\rm -rf $i;
 | |
|     done
 | |
|   fi
 | |
| 
 | |
| fi
 |