#! /usr/bin/env python

desc="""Copies files modified in the last [-t arg1] days into 
backup folder [-d arg2]
Defaults are 1 day of files put into directory with
current date (yyymmdd)
Syntax example: 
copybackups.py -t 2 -d 20130123
"""

import datetime
import optparse
#import sys
import os
import glob
import time           
import shutil

days=1 #default copies past 24 hours of changes
now = datetime.datetime.now()
date_dir=now.strftime("%Y%m%d") #default date is today's date

parser = optparse.OptionParser(description=desc)
parser.add_option('-t', '--time',
                  help='days of modified files to copy to backup directory; \
default is 1 day',
                  action='store', dest='days',default=1,type='float')
parser.add_option('-d', '--date',
                  help='date (or other name) for created or existing backup \
directory; default is today\'s date (yyyymmdd)',
                  action='store', dest='date',default=date_dir)
parser.add_option('-s', '--svn',
                  help='copy to svn directory instead (overwrites -d [arg])',
                  action='store_true', dest='svn',default='False')
(opts, args) = parser.parse_args()
date_dir=opts.date
days=opts.days

#choose backup directory or svn directory (hardcoded...)
if opts.svn==True:
    date_dir='/home/grogg/pathto/svn/trunk'
else:
    date_dir='/home/grogg/pathto/backups/'+date_dir

#make new date directory if needed    
if not os.path.exists(date_dir):
    os.makedirs(date_dir)

mins=float(days)*60.*24.
ago=now-datetime.timedelta(minutes=mins)
#root=os.getcwd()
root='/home/grogg/path/'  # (hardcoded...)

"""
loop over all files within "root", copy to backups any files
with .m or .fig extensions modified within chosen time frame
"""

for folder in glob.glob(root):
    for file in glob.glob(folder + '/*.m') + glob.glob(folder + '/*.fig'):
        stats = os.stat(file)
        mtime=datetime.datetime.fromtimestamp(stats.st_mtime)
        if mtime>ago:
            shutil.copy(file, date_dir)

print "copied files from last " + str(days) + " days into " + date_dir                
       

