move tar related code to borg.archiver.tar

This commit is contained in:
Thomas Waldmann 2022-08-13 21:31:41 +02:00
parent 900398f927
commit ded384929d
3 changed files with 19 additions and 20 deletions

View File

@ -13,7 +13,6 @@ from ..constants import * # NOQA
from ..helpers import Manifest
from ..helpers import HardLinkManager
from ..helpers import ProgressIndicatorPercent
from ..helpers import get_tar_filter
from ..helpers import dash_open
from ..helpers import msgpack
from ..helpers import create_filter_process
@ -33,6 +32,24 @@ from ..logger import create_logger
logger = create_logger(__name__)
def get_tar_filter(fname, decompress):
# Note that filter is None if fname is '-'.
if fname.endswith((".tar.gz", ".tgz")):
filter = "gzip -d" if decompress else "gzip"
elif fname.endswith((".tar.bz2", ".tbz")):
filter = "bzip2 -d" if decompress else "bzip2"
elif fname.endswith((".tar.xz", ".txz")):
filter = "xz -d" if decompress else "xz"
elif fname.endswith((".tar.lz4",)):
filter = "lz4 -d" if decompress else "lz4"
elif fname.endswith((".tar.zstd",)):
filter = "zstd -d" if decompress else "zstd"
else:
filter = None
logger.debug("Automatically determined tar filter: %s", filter)
return filter
class TarMixIn:
@with_repository(compatibility=(Manifest.Operation.READ,))
@with_archive

View File

@ -17,7 +17,7 @@ from .fs import secure_erase, safe_unlink, dash_open, os_open, os_stat, umount
from .fs import O_, flags_root, flags_dir, flags_special_follow, flags_special, flags_base, flags_normal, flags_noatime
from .fs import HardLinkManager
from .manifest import Manifest, NoManifestError, MandatoryFeatureUnsupported, AI_HUMAN_SORT_KEYS
from .misc import sysinfo, log_multi, consume, get_tar_filter
from .misc import sysinfo, log_multi, consume
from .misc import ChunkIteratorFileWrapper, open_item, chunkit, iter_separated, ErrorIgnoringTextIOWrapper
from .parseformat import bin_to_hex, safe_encode, safe_decode
from .parseformat import remove_surrogates, eval_escapes, decode_dict, positive_int_validator, interval

View File

@ -189,21 +189,3 @@ def iter_separated(fd, sep=None, read_size=4096):
# or if there was no data before EOF
if len(part) > 0: # type: ignore[arg-type]
yield part
def get_tar_filter(fname, decompress):
# Note that filter is None if fname is '-'.
if fname.endswith((".tar.gz", ".tgz")):
filter = "gzip -d" if decompress else "gzip"
elif fname.endswith((".tar.bz2", ".tbz")):
filter = "bzip2 -d" if decompress else "bzip2"
elif fname.endswith((".tar.xz", ".txz")):
filter = "xz -d" if decompress else "xz"
elif fname.endswith((".tar.lz4",)):
filter = "lz4 -d" if decompress else "lz4"
elif fname.endswith((".tar.zstd",)):
filter = "zstd -d" if decompress else "zstd"
else:
filter = None
logger.debug("Automatically determined tar filter: %s", filter)
return filter