Browse Source

[ADD] delete old backups

robert 6 years ago
parent
commit
a59be7313b
1 changed files with 22 additions and 5 deletions
  1. 22 5
      backup.py

+ 22 - 5
backup.py

@@ -7,6 +7,7 @@ from dropbox.files import WriteMode
 from dropbox.exceptions import ApiError, AuthError
 from dropbox.exceptions import ApiError, AuthError
 from docker.errors import NotFound, APIError
 from docker.errors import NotFound, APIError
 from io import BytesIO
 from io import BytesIO
+from datetime import datetime, timedelta
 import time
 import time
 
 
 BACKUP_AGE = 30
 BACKUP_AGE = 30
@@ -34,8 +35,23 @@ def get_dropbox_connection():
 '''
 '''
 def delete_dropbox_old_folder(dbx=None):
 def delete_dropbox_old_folder(dbx=None):
     if 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():
 def create_folder_path():
@@ -53,7 +69,7 @@ def create_dropbox_folder(folder_path, dbx=None):
         if len(result.matches) > 0:
         if len(result.matches) > 0:
             return False
             return False
 
 
-        dbx.files_create_folder(folder_path)
+        dbx.files_create_folder_v2(folder_path)
         return True
         return True
     except ApiError:
     except ApiError:
         return False
         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)
         remote_path = ('%s/%s') % (backup_path, backup_file_name)
         dbx.files_upload(raw_data.read(), remote_path, mode=WriteMode('overwrite'))
         dbx.files_upload(raw_data.read(), remote_path, mode=WriteMode('overwrite'))
-        raw_data.close()
 
 
+        raw_data.close()
         return True
         return True
     except (APIError, ApiError):
     except (APIError, ApiError):
         return False
         return False
@@ -163,7 +179,6 @@ def delete_backup_file(backup_name, docker_client):
     if result.exit_code == -1:
     if result.exit_code == -1:
         return False
         return False
 
 
-    print(result.output)
     return True
     return True
     
     
 
 
@@ -205,4 +220,6 @@ def run_backup():
 
 
     docker_client.close()
     docker_client.close()
 
 
-run_backup()
+# run_backup()
+dbx = get_dropbox_connection()
+delete_dropbox_old_folder(dbx)