· 8 years ago · Feb 21, 2017, 09:36 PM
1import subprocess
2import ConfigParser
3from time import strftime
4from os.path import getsize
5from dropbox import client, rest, session
6
7
8# populating variables
9ACCESS_TYPE = 'app_folder'
10config = ConfigParser.RawConfigParser()
11config.read('const.cfg')
12APP_KEY = config.get('Section1', 'KEY')
13APP_SECRET = config.get('Section1', 'SECRET')
14oauth_token = config.get('Section1', 'token')
15oauth_token_secret = config.get('Section1', 'token_secret')
16sess = session.DropboxSession(APP_KEY, APP_SECRET, ACCESS_TYPE)
17
18
19# creating backup
20request_token = sess.obtain_request_token()
21url = sess.build_authorize_url(request_token)
22print "url:", url
23raw_input("Please visit this website and press the 'Allow' button, then hit 'Enter' here.")
24access_token = sess.obtain_access_token(request_token)
25config.set('Section1', 'token', access_token.key)
26config.set('Section1', 'token_secret', access_token.secret)
27with open('const.cfg', 'wb') as configfile:
28 config.write(configfile)
29
30
31# dropbox part
32client = client.DropboxClient(sess)
33USER = config.get('Section1', 'USER')
34PASS = config.get('Section1', 'PASS')
35HOST = config.get('Section1', 'HOST')
36BACKUP_DIR = config.get('Section1', 'backup')
37dumper = """ pg_dump -U %s -Z 9 -f %s -F c %s -h %s """
38database_name = [config.get('Section1', 'dbname')]
39
40
41print "dump started for %s" % database_name
42thetime = str(strftime("%Y-%m-%d-%H-%M"))
43file_name = database_name + '_' + thetime + ".sql.pgdump"
44command = dumper % (USER, BACKUP_DIR + file_name, database_name, HOST)
45subprocess.call(command, shell=True)
46print "%s dump finished" % database_name
47print "Backup job complete."
48
49
50with open(file_name, 'rb') as f:
51 fsize = getsize(file_name)
52 uploader = client.get_chunked_uploader(f, fsize)
53 print "Uploading file", fsize, "bytes..."
54 while uploader.offset < fsize:
55 try:
56 upload = uploader.upload_chunked()
57 print "."
58 except rest.ErrorResponse, e:
59 print "error uploading file!"
60 uploader.finish("/" + file_name)
61 f.close()
62 print "File uploaded successfully."