selective-backup.py
This commit is contained in:
+39
-16
@@ -1,29 +1,52 @@
|
|||||||
import shutil
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
from zipfile import ZipFile
|
||||||
import os
|
import os
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
filelist = "/media/hd/cloud/Tilman/Computer/selective-backups/filelist.txt"
|
||||||
|
|
||||||
|
days_to_keep = 5
|
||||||
|
months_to_keep = 5
|
||||||
|
|
||||||
daily_dir = "/media/hd/cloud/Tilman/Computer/selective-backups/daily/"
|
daily_dir = "/media/hd/cloud/Tilman/Computer/selective-backups/daily/"
|
||||||
weekly_dir = ""
|
monthly_dir = "/media/hd/cloud/Tilman/Computer/selective-backups/monthly/"
|
||||||
monthly_dir = ""
|
|
||||||
|
|
||||||
basedir = "/media/hd/cloud/"
|
basedir = "/media/hd/cloud"
|
||||||
filelist = "/media/hd/cloud/Tilman/Computer/selective-backups/filelist.txt"
|
|
||||||
now = datetime.now()
|
now = datetime.now()
|
||||||
date_time = now.strftime("%Y-%m-%d_")
|
today = datetime.today()
|
||||||
|
target_filename = today.strftime('%Y-%m-%d') + "_selective-backup.zip"
|
||||||
|
|
||||||
with open(filelist) as file:
|
with open(filelist) as file:
|
||||||
lines = [line.rstrip() for line in file]
|
lines = [line.rstrip() for line in file]
|
||||||
|
|
||||||
|
#os.chdir(basedir)
|
||||||
|
|
||||||
|
# backup directories and files
|
||||||
|
with ZipFile(daily_dir + target_filename, 'w') as zip:
|
||||||
for line in lines:
|
for line in lines:
|
||||||
#f_basename = os.path.basename(line)
|
if os.path.isdir(basedir + line):
|
||||||
target_filename = date_time + line.replace("/","|") + ".tar.gz"
|
for root, dirs, files in os.walk(basedir + line):
|
||||||
print(target_filename)
|
for file in files:
|
||||||
src_path = basedir + line
|
file_path = os.path.join(root, file)
|
||||||
src_file = os.path.basename(src_path)
|
zip.write(file_path)
|
||||||
src_dir = os.path.dirname(src_path)
|
else:
|
||||||
print(src_dir)
|
zip.write(basedir + line)
|
||||||
shutil.make_archive(daily_dir + target_filename, 'gztar', src_dir, src_file)
|
|
||||||
|
# if first of month, copy over
|
||||||
|
if now.day == 1:
|
||||||
|
shutil.copy(daily_dir + target_filename, monthly_dir)
|
||||||
|
|
||||||
|
# delete old backups
|
||||||
|
for filename in os.listdir(daily_dir):
|
||||||
|
date_object = datetime.strptime(filename[:10], '%Y-%m-%d')
|
||||||
|
delta = today - date_object
|
||||||
|
if delta.days > days_to_keep:
|
||||||
|
os.remove(daily_dir + filename)
|
||||||
|
|
||||||
|
for filename in os.listdir(monthly_dir):
|
||||||
|
date_object = datetime.strptime(filename[:10], '%Y-%m-%d')
|
||||||
|
num_months = (today.year - date_object.year) * 12 + (today.month - date_object.month)
|
||||||
|
if num_months > months_to_keep:
|
||||||
|
os.remove(monthly_dir + filename)
|
||||||
|
|
||||||
|
|
||||||
#os.path.basename
|
|
||||||
#shutil.make_archive(output_filename, 'zip', dir_name)
|
|
||||||
Reference in New Issue
Block a user