-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbackup.py
67 lines (47 loc) · 1.72 KB
/
backup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
from fileupload import FileUpload
from inventory import Inventory
from inventory import FileState
import boto3
import cli
import json
import yaml
config = yaml.safe_load(open('config.yaml'))
client = boto3.client('glacier')
def upload_file(inventory_entry):
file_upload = FileUpload(config['vaultName'], inventory_entry)
file_upload.upload(client)
def list_jobs(vaultName):
response = client.list_jobs(vaultName=vaultName)
cli.pp(response)
def perform_inventory(vaultName):
glacier = boto3.resource('glacier')
vault = glacier.Vault(config['accountId'], vaultName)
job = vault.initiate_inventory_retrieval()
cli.pp(job)
def fetch_inventory(vaultName, jobId):
glacier = boto3.resource('glacier')
job = glacier.Job(config['accountId'], vaultName, jobId)
output = job.get_output()
cli.pp(output)
inventory = json.loads(output['body'].read())
cli.pp(inventory)
def sync(vaultName):
inventory = Inventory('/home/iolsen/test_pyback')
# cli.pp(inventory._entries)
inventory.save()
for entry in inventory.get_by_state(FileState.IN_PROGRESS):
upload_file(entry)
for entry in inventory.get_by_state(FileState.NEW):
upload_file(entry)
entry = inventory.get_inventory_file_entry()
if entry.get_state() != FileState.UPLOADED:
upload_file(entry)
# perform_inventory(config['vaultName'])
# list_jobs(config['vaultName'])
# fetch_inventory(config['vaultName'],
# '-YDD4AVvtcn6rn7zEYz8SF2HzNdLqqIhRnduONtSTz40jOBfAvIvycrfGJNijSefJHDS8D8A9tOCNxv6akFckF81Z493')
# upload_file(config['filePath'])
sync(config['vaultName'])
# inventory = Inventory('/home/iolsen/test_pyback')
# for entry in inventory._entries.itervalues():
# cli.pp(entry.__dict__)