backup: Close file handles
--HG-- extra : amend_source : 8ee363811f104459f8346df1fccb1950c3ffc76cmaster
parent
71ca5624cb
commit
5ff79e49ba
16
backup.py
16
backup.py
|
@ -24,10 +24,11 @@ class Backup(object):
|
||||||
|
|
||||||
def __init__(self, destination, config=None, pretend=False):
|
def __init__(self, destination, config=None, pretend=False):
|
||||||
self.config = configparser.ConfigParser()
|
self.config = configparser.ConfigParser()
|
||||||
print(config)
|
if config:
|
||||||
if not config:
|
self.config.read_file(config)
|
||||||
config = open(self.default_config)
|
else:
|
||||||
self.config.read_file(config)
|
with open(self.default_config) as config:
|
||||||
|
self.config.read_file(config)
|
||||||
self.config.filename = config.name
|
self.config.filename = config.name
|
||||||
self.destination = destination
|
self.destination = destination
|
||||||
self.pretend = pretend
|
self.pretend = pretend
|
||||||
|
@ -126,13 +127,16 @@ class Backup(object):
|
||||||
|
|
||||||
def _run(self, *cmd):
|
def _run(self, *cmd):
|
||||||
self.log.debug('Running command: {}'.format(' '.join(cmd)))
|
self.log.debug('Running command: {}'.format(' '.join(cmd)))
|
||||||
|
devnull = open(os.devnull)
|
||||||
try:
|
try:
|
||||||
subprocess.check_call(cmd, stdin=open(os.devnull),
|
subprocess.check_call(cmd, stdin=devnull,
|
||||||
stdout=self.stdout, stderr=self.stderr)
|
stdout=self.stdout, stderr=self.stderr)
|
||||||
except (OSError, subprocess.CalledProcessError) as e:
|
except (OSError, subprocess.CalledProcessError) as e:
|
||||||
raise BackupError('Error executing rsync: {}'.format(e))
|
raise BackupError('Error executing rsync: {}'.format(e))
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
raise BackupError('rsync interrupted')
|
raise BackupError('rsync interrupted')
|
||||||
|
finally:
|
||||||
|
devnull.close()
|
||||||
|
|
||||||
|
|
||||||
def _parse_args():
|
def _parse_args():
|
||||||
|
@ -160,6 +164,8 @@ def _parse_args():
|
||||||
def main():
|
def main():
|
||||||
args = _parse_args()
|
args = _parse_args()
|
||||||
backup = Backup(args.destination, args.config, args.pretend)
|
backup = Backup(args.destination, args.config, args.pretend)
|
||||||
|
if args.config:
|
||||||
|
args.config.close()
|
||||||
if not args.quiet:
|
if not args.quiet:
|
||||||
print('Backing up to {} using configuration from {}'.format(
|
print('Backing up to {} using configuration from {}'.format(
|
||||||
args.destination, backup.config.filename))
|
args.destination, backup.config.filename))
|
||||||
|
|
Loading…
Reference in New Issue