feat: Update compression for tar
This commit is contained in:
		@@ -118,38 +118,40 @@ remove_if_empty() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set_compression() {
 | 
					set_compression() {
 | 
				
			||||||
    # Set `compr_cmd` and `compr_ext` by name.
 | 
					    # Set `cmpr_cmd`, `cmpr_ext` and `tar_ext` by `$1` value.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Select compression utility and set filename extension.
 | 
					    # Select compression utility and set filename extension.
 | 
				
			||||||
    # Refference: https://www.gnu.org/software/tar/manual/html_node/gzip.html
 | 
					    # Refference: https://www.gnu.org/software/tar/manual/html_node/gzip.html
 | 
				
			||||||
    case "$1" in
 | 
					    case "$1" in
 | 
				
			||||||
        gzip|gz)    compr_ext='.gz';      compr_cmd='gzip';;
 | 
					    gzip|gz)    cmpr_ext='.gz';    tar_ext='.tar.gz';   cmpr_cmd='gzip';;
 | 
				
			||||||
        tgz)        compr_ext='.gz';      compr_cmd='gzip';;
 | 
					    tgz)        cmpr_ext='.gz';    tar_ext='.tgz';      cmpr_cmd='gzip';;
 | 
				
			||||||
        taz)        compr_ext='.gz';      compr_cmd='gzip';;
 | 
					    taz)        cmpr_ext='.gz';    tar_ext='.taz';      cmpr_cmd='gzip';;
 | 
				
			||||||
        compress|Z) compr_ext='.Z';       compr_cmd='compress';;
 | 
					    compress|Z) cmpr_ext='.Z';     tar_ext='.tar.Z';    cmpr_cmd='compress';;
 | 
				
			||||||
        taZ)        compr_ext='.Z';       compr_cmd='compress';;
 | 
					    taZ)        cmpr_ext='.Z';     tar_ext='.taZ';      cmpr_cmd='compress';;
 | 
				
			||||||
        bzip2|bz2)  compr_ext='.bz2';     compr_cmd='bzip2';;
 | 
					    bzip2|bz2)  cmpr_ext='.bz2';   tar_ext='.tar.bz2';  cmpr_cmd='bzip2';;
 | 
				
			||||||
        tz2)        compr_ext='.bz2';     compr_cmd='bzip2';;
 | 
					    tz2)        cmpr_ext='.bz2';   tar_ext='.tz2';      cmpr_cmd='bzip2';;
 | 
				
			||||||
        tbz2)       compr_ext='.bz2';     compr_cmd='bzip2';;
 | 
					    tbz2)       cmpr_ext='.bz2';   tar_ext='.tbz2';     cmpr_cmd='bzip2';;
 | 
				
			||||||
        tbz)        compr_ext='.bz2';     compr_cmd='bzip2';;
 | 
					    tbz)        cmpr_ext='.bz2';   tar_ext='.tbz';      cmpr_cmd='bzip2';;
 | 
				
			||||||
        lzip|lz)    compr_ext='.lz';      compr_cmd='lzip';;
 | 
					    lzip|lz)    cmpr_ext='.lz';    tar_ext='.tar.lz';   cmpr_cmd='lzip';;
 | 
				
			||||||
        lzma)       compr_ext='.lzma';    compr_cmd='lzma';;
 | 
					    lzma)       cmpr_ext='.lzma';  tar_ext='.tar.lzma'; cmpr_cmd='lzma';;
 | 
				
			||||||
        tlz)        compr_ext='.lzma';    compr_cmd='lzma';;
 | 
					    tlz)        cmpr_ext='.lzma';  tar_ext='.tlz';      cmpr_cmd='lzma';;
 | 
				
			||||||
        lzop|lzo)   compr_ext='.lzop';    compr_cmd='lzop';;
 | 
					    lzop|lzo)   cmpr_ext='.lzop';  tar_ext='.tar.lzo';  cmpr_cmd='lzop';;
 | 
				
			||||||
        xz)         compr_ext='.xz';      compr_cmd='xz';;
 | 
					    xz)         cmpr_ext='.xz';    tar_ext='.tar.xz';   cmpr_cmd='xz';;
 | 
				
			||||||
        zstd|zst)   compr_ext='.zst';     compr_cmd='zstd --rm';;
 | 
					    zstd|zst)   cmpr_ext='.zst';   tar_ext='.tar.zst';  cmpr_cmd='zstd --rm';;
 | 
				
			||||||
        tzst)       compr_ext='.zst';     compr_cmd='zstd --rm';;
 | 
					    tzst)       cmpr_ext='.zst';   tar_ext='.tzst';     cmpr_cmd='zstd --rm';;
 | 
				
			||||||
        *)  # No compression
 | 
					    *)  # No compression
 | 
				
			||||||
            # shellcheck disable=SC2034
 | 
					        # shellcheck disable=SC2034
 | 
				
			||||||
            compr_ext=
 | 
					        cmpr_ext=
 | 
				
			||||||
            # shellcheck disable=SC2034
 | 
					        # shellcheck disable=SC2034
 | 
				
			||||||
            compr_cmd=
 | 
					        tar_ext='.tar'
 | 
				
			||||||
            ;;
 | 
					        # shellcheck disable=SC2034
 | 
				
			||||||
 | 
					        cmpr_cmd=
 | 
				
			||||||
 | 
					        ;;
 | 
				
			||||||
    esac
 | 
					    esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [ -z "$compr_cmd" ] && return # Exit from function if no compression set
 | 
					    [ -z "$cmpr_cmd" ] && return # Exit from function if no compression set
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    is_installed "${compr_cmd%% *}"
 | 
					    is_installed "${cmpr_cmd%% *}"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
compress_file() {
 | 
					compress_file() {
 | 
				
			||||||
@@ -163,15 +165,15 @@ compress_file() {
 | 
				
			|||||||
    if [ -n "$compression" ]; then
 | 
					    if [ -n "$compression" ]; then
 | 
				
			||||||
        set_compression "$compression"
 | 
					        set_compression "$compression"
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        compr_cmd=
 | 
					        cmpr_cmd=
 | 
				
			||||||
        compr_ext=
 | 
					        cmpr_ext=
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Compress file
 | 
					    # Compress file
 | 
				
			||||||
    if [ -n "$compr_cmd" ]; then
 | 
					    if [ -n "$cmpr_cmd" ]; then
 | 
				
			||||||
        log -V "Compressing file $1 by ${compr_cmd%% *} ..."
 | 
					        log -V "Compressing file $1 by ${cmpr_cmd%% *} ..."
 | 
				
			||||||
        $compr_cmd "$1" 2>> "$__log_file"
 | 
					        $cmpr_cmd "$1" 2>> "$__log_file"
 | 
				
			||||||
        compressed="${1}${compr_ext}"
 | 
					        compressed="${1}${cmpr_ext}"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [ -f "$compressed" ]; then
 | 
					    if [ -f "$compressed" ]; then
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,6 @@ src_tar() {
 | 
				
			|||||||
    local dst_path
 | 
					    local dst_path
 | 
				
			||||||
    local archive
 | 
					    local archive
 | 
				
			||||||
    local exclude
 | 
					    local exclude
 | 
				
			||||||
    local file_ext
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    uri="$1"
 | 
					    uri="$1"
 | 
				
			||||||
    # shellcheck disable=SC2154
 | 
					    # shellcheck disable=SC2154
 | 
				
			||||||
@@ -71,34 +70,13 @@ src_tar() {
 | 
				
			|||||||
    tar_options="${tar_options:--acf}"
 | 
					    tar_options="${tar_options:--acf}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Select filename extension by compression type.
 | 
					    # Select filename extension by compression type.
 | 
				
			||||||
    if [ "$compression" ]; then
 | 
					    if [ -n "$compression" ]; then
 | 
				
			||||||
        # Make sure for the `--auto-compress` is enabled in __tar_options
 | 
					        set_compression "$compression"
 | 
				
			||||||
        # Refference:
 | 
					 | 
				
			||||||
        #   https://www.gnu.org/software/tar/manual/html_node/gzip.html
 | 
					 | 
				
			||||||
        case "$compression" in
 | 
					 | 
				
			||||||
            gzip|gz)    file_ext='.tar.gz';;    # gzip
 | 
					 | 
				
			||||||
            tgz)        file_ext='.tgz';;       # gzip
 | 
					 | 
				
			||||||
            taz)        file_ext='.taz';;       # gzip
 | 
					 | 
				
			||||||
            compress|Z) file_ext='.tar.Z';;     # compress
 | 
					 | 
				
			||||||
            taZ)        file_ext='.taZ';;       # compress
 | 
					 | 
				
			||||||
            bzip2|bz2)  file_ext='.tar.bz2';;   # bzip2
 | 
					 | 
				
			||||||
            tz2)        file_ext='.tz2';;       # bzip2
 | 
					 | 
				
			||||||
            tbz2)       file_ext='.tbz2';;      # bzip2
 | 
					 | 
				
			||||||
            tbz)        file_ext='.tbz';;       # bzip2
 | 
					 | 
				
			||||||
            lzip|lz)    file_ext='.tar.lz';;    # lzip
 | 
					 | 
				
			||||||
            lzma)       file_ext='.tar.lzma';;  # lzma
 | 
					 | 
				
			||||||
            tlz)        file_ext='.tlz';;       # lzma
 | 
					 | 
				
			||||||
            lzop|lzo)   file_ext='.tar.lzo';;   # lzop
 | 
					 | 
				
			||||||
            xz)         file_ext='.tar.xz';;    # xz
 | 
					 | 
				
			||||||
            zstd|zst)   file_ext='.tar.zst';;   # zstd
 | 
					 | 
				
			||||||
            tzst)       file_ext='.tzst';;      # zstd
 | 
					 | 
				
			||||||
            *)          file_ext='.tar';;       # No compression
 | 
					 | 
				
			||||||
        esac
 | 
					 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        file_ext='.tar'
 | 
					        tar_ext='.tar'
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    archive="${dst_path}/$(gen_backup_name "$file_ext")"
 | 
					    archive="${dst_path}/$(gen_backup_name "$tar_ext")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    log "Archiving $src_path to $archive ..."
 | 
					    log "Archiving $src_path to $archive ..."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user