Sudo echo path не показывает путь, который используется для выполнения от имени sudo

Я написал быстрый скрипт для рекурсивной проверки каждого файла в каталоге и последующего сжатия только наиболее сжимаемых файлов. Он захватывает пару мегабайт внутри файла и проверяет их с помощью gzip --fast, а затем использует xzдля сжатия файла, если это необходимо.

Вы можете запустить его с :./compress.if.compressible dir _name

cores=$(grep '^core id' /proc/cpuinfo | sort -u | wc -l)

IFS=$'\n'
for file in $(find "$1" -type f); do

#Skip small files. The savings is minimal and sometimes xz just makes these larger.
size_b=`du --apparent-size -b "$file" | sed 's/\t.*//'`
if [[ $size_b -le 1024 ]]; then
    echo -e "\nSkipping small file $file"
    continue
fi

size=`du --apparent-size --block-size=1M "$file" | sed 's/\t.*//'`
reduction=$(dd if="$file" bs=1M count=2 skip=$(expr $size / 3) 2>/dev/null | gzip --fast -v 2>&1 > /dev/null)

echo -e "\n$reduction $file"

if [[ $(echo $reduction | sed 's/\..*//') -ge 20 ]]; then
    echo "$size_b *.9 > 90" | bc
    xz -v -T $cores "$file"
    new_size=`du --apparent-size -b "$file.xz" | sed 's/\t.*//'`
    if [[ `echo "$new_size * 100 / $size_b" | bc` -ge 90 ]]; then
        echo "Insufficent Compression. Reverting..."
        unxz "$file.xz"
    fi
fi

done
0
23.08.2021, 17:07
0 ответов

Теги

Похожие вопросы