/usr/share/pyshared/CedarBackup2/actions/purge.py is in cedar-backup2 2.27.0-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | # -*- coding: iso-8859-1 -*-
# vim: set ft=python ts=3 sw=3 expandtab:
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
# C E D A R
# S O L U T I O N S "Software done right."
# S O F T W A R E
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
# Copyright (c) 2004-2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License,
# Version 2, as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# Copies of the GNU General Public License are available from
# the Free Software Foundation website, http://www.gnu.org/.
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
# Author : Kenneth J. Pronovici <pronovic@ieee.org>
# Language : Python 2 (>= 2.7)
# Project : Cedar Backup, release 2
# Purpose : Implements the standard 'purge' action.
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
########################################################################
# Module documentation
########################################################################
"""
Implements the standard 'purge' action.
@sort: executePurge
@author: Kenneth J. Pronovici <pronovic@ieee.org>
"""
########################################################################
# Imported modules
########################################################################
# System modules
import logging
# Cedar Backup modules
from CedarBackup2.filesystem import PurgeItemList
########################################################################
# Module-wide constants and variables
########################################################################
logger = logging.getLogger("CedarBackup2.log.actions.purge")
########################################################################
# Public functions
########################################################################
##########################
# executePurge() function
##########################
# pylint: disable=W0613
def executePurge(configPath, options, config):
"""
Executes the purge backup action.
For each configured directory, we create a purge item list, remove from the
list anything that's younger than the configured retain days value, and then
purge from the filesystem what's left.
@param configPath: Path to configuration file on disk.
@type configPath: String representing a path on disk.
@param options: Program command-line options.
@type options: Options object.
@param config: Program configuration.
@type config: Config object.
@raise ValueError: Under many generic error conditions
"""
logger.debug("Executing the 'purge' action.")
if config.options is None or config.purge is None:
raise ValueError("Purge configuration is not properly filled in.")
if config.purge.purgeDirs is not None:
for purgeDir in config.purge.purgeDirs:
purgeList = PurgeItemList()
purgeList.addDirContents(purgeDir.absolutePath) # add everything within directory
purgeList.removeYoungFiles(purgeDir.retainDays) # remove young files *from the list* so they won't be purged
purgeList.purgeItems() # remove remaining items from the filesystem
logger.info("Executed the 'purge' action successfully.")
|