Разработки проекта PuppyRus > Программирование и компиляция

initrd.sh - скрипт перепаковки initrd

(1/1)

sfs:

--- Код ---
#!/bin/sh
#231102 sfs
( [ ! "$1" ] || [ "$1" = "--help" ] )  && echo "Use:
    $0 initrd (unpack)
    $0 dir gz|lz|xz|zst (pack)" && exit 1

if [ -d "$1" ];then
    [ ! "$2" ] && "$0" && exit 1
    [ -f "$1.$2" ] && ( dt="$(date +%y%m%d-%H%M)" && mv "$1.$2" "$1.$2"."$dt" || exit 1 )
  case "${2}" in
    "xz")  find "$1"/. | cpio -o -H newc | xz -T0 --check=crc32 --x86 --lzma2 > "$1.$2" ;;
    "gz")  find "$1"/. | cpio -o -H newc | gzip -9 > "$1.$2" ;;
    "lz")  find "$1"/. | cpio -o -H newc | lzma -7 > "$1.$2" ;;
    "zst") find "$1"/. | cpio -o -H newc | zstd -f -18 > "$1.$2" ;;
    *)  "$0" && exit 1 ;;
  esac
else
 d="`basename "$1" | awk -F. '{print $1}'`"
 mkdir "$d" && cd "$d" &&
 { \
 file -b ../"$1" |egrep '^gzip '  > /dev/null && zcat "../"$1""   | cpio -i -d
 file -b ../"$1" |egrep '^LZMA '  > /dev/null && cd .. && lzma -dc -S .lz  "$1" | cpio -i -d
 file -b ../"$1" |egrep '^XZ '    > /dev/null && xz -dc "../"$1"" | cpio -i -d
 file -b ../"$1" |egrep '^Zst'    > /dev/null && zstd -dc "../"$1"" | cpio -i -d  \
 ; }
fi
--- Конец кода ---

Навигация

[0] Главная страница сообщений

Перейти к полной версии