Skip to content

Instantly share code, notes, and snippets.

@rjdp
Created January 14, 2017 08:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rjdp/f2d0e536f91e69f830676cfb4fc08b0e to your computer and use it in GitHub Desktop.
Save rjdp/f2d0e536f91e69f830676cfb4fc08b0e to your computer and use it in GitHub Desktop.
#! /home/blackmonk15/.virtualenv/bm/bin/python
import os, sys, re
from os import listdir
import time
import subprocess
from datetime import datetime
from optparse import OptionParser
BCKP_DIR = "/home/blackmonk15/alldbbckp"
DB_NAMES = ['dba','dbb']
DB_USER = 'user'
DB_PASSWORD = 'pass'
FILENAME_PREFIX = 'myapp.backup'
def upload_to_dropbox(destination, filename):
pass
def delete_old_files():
try:
for dbfile in os.listdir(BCKP_DIR):
fullpath = os.path.join(path,dbfile)
timestamp = os.stat(fullpath).st_ctime
createtime = datetime.datetime.fromtimestamp(timestamp)
now = datetime.datetime.now()
delta = now - createtime
if delta.days > 16:
os.remove(fullpath)
except:
print "Not able to delete file...!! ", sys.exc_info()
def db_bckp_othr():
"""
parser = OptionParser()
parser.add_option('-t', '--type', dest='backup_type',
help="Specify either 'hourly' or 'daily'.")
now = datetime.now()
filename = None
(options, args) = parser.parse_args()
if options.backup_type == 'hourly':
hour = str(now.hour).zfill(2)
filename = '%s.h%s' % (FILENAME_PREFIX, hour)
elif options.backup_type == 'daily':
day_of_year = str(now.timetuple().tm_yday).zfill(3)
filename = '%s.d%s' % (FILENAME_PREFIX, day_of_year)
else:
parser.error('Invalid argument.')
sys.exit(1)
"""
delete_old_files()
for db_name in DB_NAMES:
try:
#filename = '%s_%s.backup' % (db_name, time.strftime('%Y%m%d_%H_%M_%S'))
filename = '%s%s.backup' % (db_name, time.strftime('_%B_%d_%Y'))
destination = r'%s/%s' % (BCKP_DIR, filename)
print 'Backing up %s database to %s' % (db_name, destination)
os.putenv('PGPASSWORD', DB_PASSWORD)
ps = subprocess.Popen(
['pg_dump', '-U', DB_USER, '-Fc', db_name, '-f', destination],
stdout=subprocess.PIPE
)
#os.putenv('PGPASSWORD', DB_PASSWORD)
output = ps.communicate()[0]
for line in output.splitlines():
print line
print 'Backup done...!!, Uploading %s to Dropbox.....' % filename
#upload_to_dropbox(destination, filename)
except:
print "Error in backup ",sys.exc_info()
if __name__ == '__main__':
db_bckp_othr()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment