mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
b7db2d5f80
Docker-DCO-1.1-Signed-off-by: Daniel Mizyrycki <daniel@docker.com> (github: mzdaniel)
47 lines
1.5 KiB
Python
Executable file
47 lines
1.5 KiB
Python
Executable file
#!/usr/bin/env python
|
|
|
|
import os,sys,json
|
|
from datetime import datetime
|
|
from filecmp import cmp
|
|
from subprocess import check_call
|
|
from boto.s3.key import Key
|
|
from boto.s3.connection import S3Connection
|
|
|
|
def ENV(x):
|
|
'''Promote an environment variable for global use returning its value'''
|
|
retval = os.environ.get(x, '')
|
|
globals()[x] = retval
|
|
return retval
|
|
|
|
ROOT_PATH = '/data/backup/docker-ci'
|
|
TODAY = str(datetime.today())[:10]
|
|
BACKUP_FILE = '{}/docker-ci_{}.tgz'.format(ROOT_PATH, TODAY)
|
|
BACKUP_LINK = '{}/docker-ci.tgz'.format(ROOT_PATH)
|
|
ENV('BACKUP_BUCKET')
|
|
ENV('BACKUP_AWS_ID')
|
|
ENV('BACKUP_AWS_SECRET')
|
|
|
|
'''Create full master buildbot backup, avoiding duplicates'''
|
|
# Ensure backup path exist
|
|
if not os.path.exists(ROOT_PATH):
|
|
os.makedirs(ROOT_PATH)
|
|
# Make actual backups
|
|
check_call('/bin/tar czf {} -C /data --exclude=backup --exclude=buildbot/slave'
|
|
' . 1>/dev/null 2>&1'.format(BACKUP_FILE),shell=True)
|
|
# remove previous dump if it is the same as the latest
|
|
if (os.path.exists(BACKUP_LINK) and cmp(BACKUP_FILE, BACKUP_LINK) and
|
|
os.path._resolve_link(BACKUP_LINK) != BACKUP_FILE):
|
|
os.unlink(os.path._resolve_link(BACKUP_LINK))
|
|
# Recreate backup link pointing to latest backup
|
|
try:
|
|
os.unlink(BACKUP_LINK)
|
|
except:
|
|
pass
|
|
os.symlink(BACKUP_FILE, BACKUP_LINK)
|
|
|
|
# Make backup on S3
|
|
bucket = S3Connection(BACKUP_AWS_ID,BACKUP_AWS_SECRET).get_bucket(BACKUP_BUCKET)
|
|
k = Key(bucket)
|
|
k.key = BACKUP_FILE
|
|
k.set_contents_from_filename(BACKUP_FILE)
|
|
bucket.copy_key(os.path.basename(BACKUP_LINK),BACKUP_BUCKET,BACKUP_FILE[1:])
|