You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

38 lines
1.2 KiB

#!/usr/bin/env python3
import os
from sys import argv
from datetime import datetime, timedelta
import webdav.client as wc
options = {
'webdav_hostname': "https://webdav.yandex.ru/",
'webdav_login': "YANDEX USERNAME",
'webdav_password': "YANDEX PASSWORD"
}
REMOTE_DIR = 'DjingBackups'
def remove_old_files(border_time: datetime, client):
# files that older than border_time will be removed
for file in client.list(REMOTE_DIR):
fdate = datetime.strptime(file, 'djing%Y-%m-%d_%H.%M.%S.sql.gz')
if fdate < border_time:
del_fname = os.path.join(REMOTE_DIR, file)
client.clean(del_fname)
print("rm %s" % del_fname)
if __name__ == '__main__':
reqfile = argv[1]
try:
client = wc.Client(options)
if reqfile == 'rotate':
border_time = datetime.now() - timedelta(weeks=12)
remove_old_files(border_time, client)
else:
client.upload_sync(
remote_path=os.path.join(REMOTE_DIR, reqfile),
local_path=os.path.join(os.path.sep, 'var', 'backups', reqfile)
)
except wc.WebDavException as we:
print(we, type(we))