|
|
|
@ -36,6 +36,25 @@ def hardlink_all_files(files, dry=False): |
|
|
|
backup.hardlink_to(dest_dir, dry) |
|
|
|
|
|
|
|
|
|
|
|
def clean_out(backups: list[Backup], before_date, target_size): |
|
|
|
total_size = sum(backup.size for backup in backups) |
|
|
|
target_removal_size = target_size - total_size |
|
|
|
if target_removal_size <= 0: |
|
|
|
return () |
|
|
|
backups_eligable = ( |
|
|
|
backup for backup in backups if backup.properties["backup_time"] <= before_date |
|
|
|
) |
|
|
|
sorted_backups_eligable = sorted( |
|
|
|
backups_eligable, key=lambda backup: backup.size, reverse=True |
|
|
|
) |
|
|
|
to_remove = list() |
|
|
|
for backup in sorted_backups_eligable: |
|
|
|
to_remove.append(backup) |
|
|
|
target_removal_size -= backup.size |
|
|
|
if target_removal_size <= 0: |
|
|
|
return to_remove |
|
|
|
|
|
|
|
|
|
|
|
def main(): |
|
|
|
parser = ArgumentParser() |
|
|
|
parser.add_argument("-d", "--dry", action="store_true", help="Don't do anything") |
|
|
|
|