|
@@ -7,6 +7,7 @@ from dropbox.files import WriteMode
|
|
|
from dropbox.exceptions import ApiError, AuthError
|
|
|
from docker.errors import NotFound, APIError
|
|
|
from io import BytesIO
|
|
|
+from datetime import datetime, timedelta
|
|
|
import time
|
|
|
|
|
|
BACKUP_AGE = 30
|
|
@@ -34,8 +35,23 @@ def get_dropbox_connection():
|
|
|
'''
|
|
|
def delete_dropbox_old_folder(dbx=None):
|
|
|
if dbx == None:
|
|
|
- return
|
|
|
+ return False
|
|
|
+
|
|
|
+ try:
|
|
|
+ result = dbx.files_list_folder('')
|
|
|
+ date_now = datetime.now()
|
|
|
+
|
|
|
+ for folder in result.entries:
|
|
|
+ create_date = datetime.strptime(folder.name, '%Y_%m_%d')
|
|
|
+
|
|
|
+ if create_date <= date_now - timedelta(BACKUP_AGE):
|
|
|
+ # dbx.files_delete(folder.path_lower)
|
|
|
+ dbx.files_permanently_delete(folder.path_lower)
|
|
|
|
|
|
+ return True
|
|
|
+ except ApiError:
|
|
|
+ return False
|
|
|
+
|
|
|
'''
|
|
|
'''
|
|
|
def create_folder_path():
|
|
@@ -53,7 +69,7 @@ def create_dropbox_folder(folder_path, dbx=None):
|
|
|
if len(result.matches) > 0:
|
|
|
return False
|
|
|
|
|
|
- dbx.files_create_folder(folder_path)
|
|
|
+ dbx.files_create_folder_v2(folder_path)
|
|
|
return True
|
|
|
except ApiError:
|
|
|
return False
|
|
@@ -143,8 +159,8 @@ def upload_to_dropbox(backup_file_name, backup_path, docket_client, dbx):
|
|
|
|
|
|
remote_path = ('%s/%s') % (backup_path, backup_file_name)
|
|
|
dbx.files_upload(raw_data.read(), remote_path, mode=WriteMode('overwrite'))
|
|
|
- raw_data.close()
|
|
|
|
|
|
+ raw_data.close()
|
|
|
return True
|
|
|
except (APIError, ApiError):
|
|
|
return False
|
|
@@ -163,7 +179,6 @@ def delete_backup_file(backup_name, docker_client):
|
|
|
if result.exit_code == -1:
|
|
|
return False
|
|
|
|
|
|
- print(result.output)
|
|
|
return True
|
|
|
|
|
|
|
|
@@ -205,4 +220,6 @@ def run_backup():
|
|
|
|
|
|
docker_client.close()
|
|
|
|
|
|
-run_backup()
|
|
|
+# run_backup()
|
|
|
+dbx = get_dropbox_connection()
|
|
|
+delete_dropbox_old_folder(dbx)
|