From 5304693c5550aa18e3ed01469744137363e4dff4 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Mon, 25 Jan 2021 20:44:07 +0100 Subject: [PATCH] import-tar: support fifos and blk/chr devices --- src/borg/archiver.py | 13 ++++++++++++- src/borg/testsuite/archiver.py | 4 ++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/borg/archiver.py b/src/borg/archiver.py index d1a6a52f7..d9e64a312 100644 --- a/src/borg/archiver.py +++ b/src/borg/archiver.py @@ -1789,8 +1789,19 @@ class Archiver: status = 'h' item = tarinfo_to_item(tarinfo, stat.S_IFREG) item.source = tarinfo.linkname + elif tarinfo.isblk(): + status = 'b' + item = tarinfo_to_item(tarinfo, stat.S_IFBLK) + item.rdev = os.makedev(tarinfo.devmajor, tarinfo.devminor) + elif tarinfo.ischr(): + status = 'c' + item = tarinfo_to_item(tarinfo, stat.S_IFCHR) + item.rdev = os.makedev(tarinfo.devmajor, tarinfo.devminor) + elif tarinfo.isfifo(): + status = 'f' + item = tarinfo_to_item(tarinfo, stat.S_IFIFO) else: - # TODO: chr and blk devices, fifos? GNUTYPE_SPARSE? + # TODO: GNUTYPE_SPARSE? self.print_warning('%s: Unsupported tar type %s', tarinfo.name, tarinfo.type) self.print_file_status('E', tarinfo.name) continue diff --git a/src/borg/testsuite/archiver.py b/src/borg/testsuite/archiver.py index 55e41df56..8ce255091 100644 --- a/src/borg/testsuite/archiver.py +++ b/src/borg/testsuite/archiver.py @@ -3416,7 +3416,6 @@ id: 2 / e29442 3506da 4e1ea7 / 25f62a 5a3d41 - 02 def test_import_tar(self): self.create_test_files() os.unlink('input/flagfile') - os.unlink('input/fifo1') # TODO: not yet supported self.cmd('init', '--encryption=none', self.repository_location) self.cmd('create', self.repository_location + '::src', 'input') self.cmd('export-tar', self.repository_location + '::src', 'simple.tar') @@ -3431,7 +3430,8 @@ input/dir2 input/dir2/file2 input/link1 input/fusexattr -input/empty""".splitlines()) +input/empty +input/fifo1""".splitlines()) def test_detect_attic_repo(self): path = make_attic_repo(self.repository_path)