"""Copy latest glider bindary data (bd) files received in specific glider from-glider directory to localuser realtime directory. Usage: python sbdcopy.py glidername filetype input path /var/opt/gmc/gliders/{glider}/from-glider/*.{filetype} output path /home/localuser/realtime/{glider}/{filetype}/*.{filetype} Inputs: glidername [ramses | pelagia] filetype [sbd | tbd | dbd | ...] Example usage: python dbdcopy.py ramses sbd /var/opt/gmc/gliders/ramses/sbd/*.sbd all new *.sbd will be copied to: /home/localuser/realtime/ramses/sbd/*.sbd """ import sys import os import glob import shutil import errno if __name__ == "__main__": try: glider = sys.argv[1] filetype = sys.argv[2] gmc_dir = "/var/opt/gmc/gliders" local_dir = "/home/localuser/realtime" # from-glider (fg) fg_dir = os.path.join(gmc_dir, glider,"from-glider") fg_files= glob.glob1(fg_dir, "*." + filetype) # localuser bd_dir = os.path.join(local_dir, glider, filetype) bd_files = glob.glob1(bd_dir, "*." + filetype) s = set(fg_files) - set(bd_files) files = list(s) files.sort() if files: for f in files: infile = os.path.join(fg_dir, f) outfile = os.path.join(bd_dir, f) rc = shutil.copy2(infile, outfile) # copy file and file stat if rc: raise IOError("shutil.copy2 return code: " + str(rc)) else: print " ... Copied ", infile else: print "Nothing to copy" except: print __doc__