Сайт | Скачать | Видео | Wiki

Автор Тема: initrd.sh - скрипт перепаковки initrd  (Прочитано 628 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 34101
  • Репутация: +233/-0
  • Автор темы
    • PuppyRus-A
initrd.sh - скрипт перепаковки initrd
« : 02 Ноябрь 2023, 17:42:21 »
Код
#!/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