2 # -*- mode: python; sh-basic-offset: 4; indent-tabs-mode: nil; -*-
3 # vim: set filetype=python sw=4 sts=4 expandtab autoindent:
5 # Backupninja python reimplementation, based on original backupninja program
7 # Copyright (C) 2010 Matthijs Kooijman <matthijs@stdin.nl>
9 # This program is free software; you can redistribute it and/or modify
10 # it under the terms of the GNU General Public License as published by
11 # the Free Software Foundation; either version 2 of the License, or
12 # (at your option) any later version.
14 # This program is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 # GNU General Public License for more details.
19 # You should have received a copy of the GNU General Public License along
20 # with this program; if not, write to the Free Software Foundation, Inc.,
21 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23 """ Check for scheduled backupninja actions and run them when needed """
29 from backupninja.log import setup_logging
30 from backupninja import config
31 from backupninja import action
33 log = logging.getLogger()
35 def make_option_parser():
36 description = """%prog checks for scheduled actions and runs them when needed."""
37 parser = optparse.OptionParser(description=description)
38 parser.add_option( "-c", "--confdir"
39 , help="Load configuration from CONFIG_DIR "
40 "instead of '%default'. When "
41 "the --conffile or --actionsdir options "
42 "specify relative paths, they are taken "
43 "relative to this directory."
44 , default="/etc/backupninja"
46 , metavar="CONFIG_DIR")
47 parser.add_option( "-f", "--conffile"
48 , help="Load the main configuration from FILE instead "
49 "of '%default'. If FILE is a relative path, it "
50 "is interpreted relative to CONFIG_DIR."
51 , default='backupninja.conf'
52 , dest="global_config"
54 parser.add_option( "-a", "--actionsdir"
55 , help="Load action configurations from ACTIONS_DIR "
56 "instead of '%default'. If ACTIONS_DIR is a "
57 "relative path, it is interpreted relative to "
61 , metavar="ACTIONS_DIR")
62 parser.add_option( "-d", "--debug"
63 , help="Run in debug mode. This only means logging is "
70 # Parse options (Note that this exits in case of --help or an
71 # invalid commandline)
72 parser = make_option_parser()
73 (options, args) = parser.parse_args(argv)
76 setup_logging(options)
79 global_conf = config.get_global_config(options)
80 if global_conf is None:
81 # Error was already logged
85 action.run_all_actions(options, global_conf)
89 if __name__ == '__main__':
90 sys.exit(main(sys.argv))