get todays files
Andrew Doades
andrew at doadesweb.co.uk
Thu Dec 11 12:48:08 EST 2008
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()
More information about the Python-list
mailing list