Compare commits
15 Commits
v1.2.0
...
429a4a6712
Author | SHA1 | Date | |
---|---|---|---|
429a4a6712 | |||
acfbb90f91 | |||
9f26c09453 | |||
248f759d96 | |||
0125e92a0a | |||
a59c573174 | |||
b3687abb62 | |||
91b2b0d98a | |||
cf9be50c2a | |||
5ffe16cd31 | |||
8e03950102 | |||
9aa66d8e50 | |||
cfccf4aa70 | |||
e704930c71 | |||
86aed2d1f1 |
1
.python-version
Normal file
1
.python-version
Normal file
@ -0,0 +1 @@
|
|||||||
|
3.10.10
|
@ -14,6 +14,7 @@ Released under the GNU GENERAL PUBLIC LICENSE v3 (See LICENSE file for more)
|
|||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import os
|
import os
|
||||||
|
# import pprint
|
||||||
import shutil
|
import shutil
|
||||||
import sys
|
import sys
|
||||||
import syslog
|
import syslog
|
||||||
@ -148,6 +149,7 @@ class BackupRotator:
|
|||||||
self.log("Path only has {} items, which does not meet the minimum threshold of {} items. Won't rotate this path.".format(
|
self.log("Path only has {} items, which does not meet the minimum threshold of {} items. Won't rotate this path.".format(
|
||||||
len(children), minimum_items
|
len(children), minimum_items
|
||||||
))
|
))
|
||||||
|
return
|
||||||
elif len(children) <= max_items:
|
elif len(children) <= max_items:
|
||||||
self.log("Path only has {} items, but needs more than {} for rotation; Won't rotate this path.".format(
|
self.log("Path only has {} items, but needs more than {} for rotation; Won't rotate this path.".format(
|
||||||
len(children), max_items
|
len(children), max_items
|
||||||
@ -185,7 +187,7 @@ class BackupRotator:
|
|||||||
self.log("Removing items")
|
self.log("Removing items")
|
||||||
for child_to_purge in children_to_purge:
|
for child_to_purge in children_to_purge:
|
||||||
child_basename = os.path.basename(child_to_purge)
|
child_basename = os.path.basename(child_to_purge)
|
||||||
self._remove_item(config, item_to_purge)
|
self._remove_item(config, child_to_purge)
|
||||||
|
|
||||||
def _rotate_path_for_maximum_age(self, config, path: str, max_age_days: int):
|
def _rotate_path_for_maximum_age(self, config, path: str, max_age_days: int):
|
||||||
|
|
||||||
@ -194,6 +196,14 @@ class BackupRotator:
|
|||||||
self.log("Rotating path for max age of {} days: {}".format(max_age_days, path))
|
self.log("Rotating path for max age of {} days: {}".format(max_age_days, path))
|
||||||
|
|
||||||
children = self._gather_rotation_candidates(config, path)
|
children = self._gather_rotation_candidates(config, path)
|
||||||
|
minimum_items = self._determine_minimum_items(config)
|
||||||
|
|
||||||
|
# Do we need to rotate anything out?
|
||||||
|
if len(children) < minimum_items:
|
||||||
|
self.log("Path only has {} items, which does not meet the minimum threshold of {} items. Won't rotate this path.".format(
|
||||||
|
len(children), minimum_items
|
||||||
|
))
|
||||||
|
return
|
||||||
|
|
||||||
self.log("Examining {} items for deletion".format(len(children)))
|
self.log("Examining {} items for deletion".format(len(children)))
|
||||||
children_to_delete = []
|
children_to_delete = []
|
||||||
|
3
Pipfile
3
Pipfile
@ -9,5 +9,6 @@ pyyaml = ">=5.4"
|
|||||||
[dev-packages]
|
[dev-packages]
|
||||||
|
|
||||||
[requires]
|
[requires]
|
||||||
python_version = "3"
|
python_version = "3.10.10"
|
||||||
|
|
||||||
|
|
||||||
|
4
Pipfile.lock
generated
4
Pipfile.lock
generated
@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"_meta": {
|
"_meta": {
|
||||||
"hash": {
|
"hash": {
|
||||||
"sha256": "ac6a3bf65ec43902d7a8907c3b0ae70e365127a1f93ecf12080f847eadb7dc35"
|
"sha256": "cceb18d3baeb19edef3ba31b743720003102c4c3d9cddd6b595c664692a37384"
|
||||||
},
|
},
|
||||||
"pipfile-spec": 6,
|
"pipfile-spec": 6,
|
||||||
"requires": {
|
"requires": {
|
||||||
"python_version": "3"
|
"python_version": "3.10.5"
|
||||||
},
|
},
|
||||||
"sources": [
|
"sources": [
|
||||||
{
|
{
|
||||||
|
16
README.md
16
README.md
@ -78,11 +78,25 @@ Specifies the method used when attempting to determine how old a backup file/dir
|
|||||||
|
|
||||||
Currently, only *file* is supported
|
Currently, only *file* is supported
|
||||||
|
|
||||||
|
### minimum-items < INTEGER >
|
||||||
|
|
||||||
|
Specifies the minimum number of backup files/dirs that must be present before rotating can happen. Should be an integer.
|
||||||
|
|
||||||
|
This option doesn't specify how much to rotate on its own, but when rotation is possible. It should probably be used with maximum-age or something other than maximum-items.
|
||||||
|
|
||||||
|
For example, when the *minimum-items* value is set to 5, and *target-type* is *file*, the program will not rotate any files until there are at least 5 in the target directory.
|
||||||
|
|
||||||
### maximum-items < INTEGER >
|
### maximum-items < INTEGER >
|
||||||
|
|
||||||
Specifies the maximum number of backup files/dirs that are allowed in a path before rotating will happen. Should be an integer.
|
Specifies the maximum number of backup files/dirs that are allowed in a path before rotating will happen. Should be an integer.
|
||||||
|
|
||||||
For example, when the *maximum-items* value is set to 5, and *target-type* is *file*, the program will not rotate any files until there are at least 5 in the target directory.
|
For example, when the *maximum-items* value is set to 500, and *target-type* is *file*, the program will not rotate any files until there are at least 500 in the target directory.
|
||||||
|
|
||||||
|
### maximum-age < INTEGER >
|
||||||
|
|
||||||
|
Specifies the maximum age (in days) of backup files/dirs that are allowed in a path before rotating will happen. Should be an integer.
|
||||||
|
|
||||||
|
For example, when the *maximum-age* value is set to 30, and *target-type* is *file*, the program will not rotate any files that are newer than 30 days.
|
||||||
|
|
||||||
### paths < Array of Paths >
|
### paths < Array of Paths >
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user