diff options
author | Lars Wirzenius <liw@liw.fi> | 2011-08-08 18:31:28 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2011-08-08 18:31:28 +0100 |
commit | 426874e2d002dd0d4638ff9c96160c5ae5d6e656 (patch) | |
tree | 490915bf6ba9e03f3c095d5072e37c299dfb8f5d | |
parent | ba20bfebd024c9a41a98a58ec8c2848dec0ce80c (diff) | |
download | obnam-426874e2d002dd0d4638ff9c96160c5ae5d6e656.tar.gz |
Add support for Unix sockets.
-rw-r--r-- | NEWS | 1 | ||||
-rwxr-xr-x | blackboxtest | 9 | ||||
-rw-r--r-- | obnamlib/plugins/restore_plugin.py | 8 |
3 files changed, 17 insertions, 1 deletions
@@ -20,6 +20,7 @@ USER VISIBLE CHANGES: * The error message when trying to use an encrypted repository without encryption is now better (and suggests missing encryption being the reason). Thanks, chrysn. +* Obnam now supports backing up of Unix sockets. Version 0.19, released 2011-08-03; a BETA release ------------------------------------------------- diff --git a/blackboxtest b/blackboxtest index 264b5cd6..1a51c319 100755 --- a/blackboxtest +++ b/blackboxtest @@ -356,7 +356,7 @@ class ObnamTestCase(unittest.TestCase): logging.error('file %s not in restored data' % name) self.report_contents(self.data_dir, origs) self.report_contents(self.restored_dir, restoreds) - raise cliapp.AppException('%s not in restored data' % name) + raise Exception('%s not in restored data' % name) restored_stat = restoreds[name] self.assert_same_stat(name, orig_stat, restored_stat) if stat.S_ISREG(orig_stat.st_mode): @@ -417,6 +417,13 @@ class RestoreTests(ObnamTestCase): self.restore() self.assert_restored_correctly() + def test_restores_socket(self): + pathname = os.path.join(self.data_dir, 'socket') + os.mknod(pathname, 0600 | stat.S_IFSOCK) + self.backup() + self.restore() + self.assert_restored_correctly() + def _mangle_chunks(self): chunkdir = os.path.join(self.repo_dir, 'chunks') for dirname, subdirs, basenames in os.walk(chunkdir): diff --git a/obnamlib/plugins/restore_plugin.py b/obnamlib/plugins/restore_plugin.py index 9c2ac83b..ff93dbea 100644 --- a/obnamlib/plugins/restore_plugin.py +++ b/obnamlib/plugins/restore_plugin.py @@ -152,6 +152,8 @@ class RestorePlugin(obnamlib.ObnamPlugin): self.restore_regular_file(gen, to_dir, filename, metadata) elif stat.S_ISFIFO(metadata.st_mode): self.restore_fifo(gen, to_dir, filename, metadata) + elif stat.S_ISSOCK(metadata.st_mode): + self.restore_socket(gen, to_dir, filename, metadata) else: msg = ('Unknown file type: %s (%o)' % (filename, metadata.st_mode)) @@ -215,3 +217,9 @@ class RestorePlugin(obnamlib.ObnamPlugin): self.fs.mknod(to_filename, metadata.st_mode) obnamlib.set_metadata(self.fs, to_filename, metadata) + def restore_socket(self, gen, to_dir, filename, metadata): + logging.debug('restoring socket %s' % filename) + to_filename = os.path.join(to_dir, './' + filename) + self.fs.mknod(to_filename, metadata.st_mode) + obnamlib.set_metadata(self.fs, to_filename, metadata) + |