Разработки проекта 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
--- Конец кода ---
Навигация
Перейти к полной версии