瀏覽代碼

[ADD] delete old backups

robert 5 年之前
父節點
當前提交
a59be7313b
共有 1 個文件被更改,包括 22 次插入5 次删除
  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)