Tim Chase wrote:
This looks very good and I have tested successfully, but is there a
way I can set the today to automatically become todays date in that
format?

Yes...see the python datetime module[1]...particularly the strftime() call on date/datetime objects.

-tkc

[1]
http://docs.python.org/library/datetime.html

I know this will sound like I am being very cheeky, but is there a way you can make this for where the ftp server is actually windows server?

The script runs and it shows the date the file was modified, but still downloads them, I have attached the script I am now using with your code in.


import os
from ftplib import FTP
import subprocess
from datetime import datetime
from time import gmtime, strftime

curr_date = strftime("%d %B %Y", gmtime())

# config
ftp_uname = ''
ftp_pwd = ''
ftp_server = ''
# end of config

fileroot = 'DBBackup_'
os.chdir('c:/')
files = []
logfile = open('c:/dbbackup/getmdbackups.log','a+')

def makelist(line):
   if (line.startswith(fileroot)):
fs = [line] files.append(fs)

def log(line):
   ll = str(datetime.now()) + ' : ' + str(line)
   print ll
   logfile.write(ll + '\n')

def fileexists(ff, size):
   if (os.path.exists(ff)):
       stat = os.stat(ff)
       if (stat.st_size == size):
           return True
   return False

try:
   # first connect using ftp to get a list of valid backup failes available
   log('Connecting to ftp server')
   ftp = FTP(ftp_server)
   ftp.set_pasv(False)
   #ftp.set_debuglevel(2)
   resp = ftp.login(ftp_uname,ftp_pwd)
   log(resp)
   ftp.retrlines('NLST',makelist)
   log(str(files))
   ftp.quit()
# fetch files in a loop using wget.
   for ff in files:
       ftp = FTP(ftp_server)
       ftp.set_pasv(False)
       resp = ftp.login(ftp_uname,ftp_pwd)
       log(resp)
       size = ftp.size(ff[0])
       log('Size of server file = ' + str(size))
       #ftp.quit()
       try:
           if (not fileexists(ff[0],size)):
           results = ftp.sendcmd("MDTM %s" % ff[0])
       code, stamp = results.split(None, 1)
       assert code == "213", "Unexpected result"
       print "%s was modified on %s" % (ff[0], stamp)
       today = curr_date
       if stamp[:8] == today:
                   log('Transferring: ' + ff[0])
               # make parameters to wget the backup file
               params = ' ftp://' + ftp_server + '/' + ff[0]
               rcode = subprocess.call('c:/wget.exe ' + params)
               log('Return code from wget = ' + str(rcode))
               if (rcode == 0):
            ff[1] = 1
else: log('File ' + ff[0] + ' already exists locally, not transferring')
               ff[1] = 1

       except Exception, e:
         log(str(e))
log('Transfer complete') # delete the server files that have been transferred or are already here with the right filesize.
   for ff in files:
       if (ff[1] == 1):
           log('delete ' + ff[0])
except Exception,e:
   log(str(e))
# clean up temp files
log('Finished.')
logfile.close()
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to