1 (изменено: smaharbA, 2012-05-25 11:14:17)

Тема: BASH: Предложите метод сжатия файла при отсутствии свободного места ФС

Есть файл - пусть 20 Гб, на ФС 1 - 2 Гб свободного места. Предложите варианты сжатия исходного файла без привлечения внешних/сетевых носителей.
Файл должен быть сжат как единое целое, т.е. с возможностью его использования в приложениях.

Я конечно далек от мысли... (с)

2

Re: BASH: Предложите метод сжатия файла при отсутствии свободного места ФС

Тема актуальна, актуальна и обратная задача - есть архив и немного свободного пространства, известно, что остатка свободного пространства + место занимаемое архивом достаточно для распакованного содержимого архива - как распаковать не прибегая ко внешним хранилищам ?
запаковка вариант (предложите без временных)

#!/bin/sh

file=$1
[ ! -f ${file} ] && exit
prefix=${file}.$$
x=0
size=`wc -c ${file} | cut -d' ' -f1`
split=$((1024 * 1024 * 32))
x=$((${size} / ${split} + 1))
m=${x}
while [ ${size} -ge ${split} ]; do
    tail -c ${split} ${file} > ${prefix}.`printf '%010d' ${x}`
    size=$((${size} - ${split}))
    truncate -s -${split} ${file}
    echo $(( ${m} - ${x} )) 1>&2
    x=$((x-1))
done
mv ${file} ${prefix}.`printf '%010d' ${x}`
echo "START GZIP ${file}..."
for x in ${prefix}.*; do
    cat ${x}
    rm ${x} > /dev/null || {
        echo ${x} 1>&2
        break
    }
    m=$((${m} - 1))
    echo ${m} 1>&2
done | gzip -c > ${file}.gz
Я конечно далек от мысли... (с)