Страница 1 из 1

Перепаковка рамдиска из скрипта. Помогите с скриптом

Добавлено: 27 окт 2012, 16:36
collabiao
Доброго всем дня
Суть проблемы - есть BASH скрипт, работающий из Ubuntu для перепаковки ramdisk (initrd.gz), нужен аналог для Windows
Скрипт использует cpio и gunzip, их версии скомпиленые для Windows (бины, сорцы и доки)

Вот собстно sh скрипт:

Код: Выделить всё

#!/usr/bin/sh

#Распаковка
gunzip initrd.gz
cpio -i < initrd

#Здесь происходят изменения распакованых файлов
...

#Запаковка
rm initrd
find . | cpio -o -H newc | gzip > ../initrd.gz
А вот моя наработка для Windows:

Код: Выделить всё

@echo off
@cls
echo.
echo Unpacking...
gunzip initrd.gz
cpio -i < initrd
echo.
echo Done! Now modify some files and press ENTER...
pause > nul
echo Repacking...
rem Вот тут и облом полный т.к. комманды find, находящей все файлы и передающей их следющему [b]cpio -o -H newc[/b] в Windows просто не существует
Прошу вашей помощи, специалисты
:)

Re: Перепаковка рамдиска из скрипта. Помогите с скриптом

Добавлено: 28 окт 2012, 23:02
Raven
Не знаю как насчет win-команд, но что мешает заюзать find из комплекта cygwin?

Re: Перепаковка рамдиска из скрипта. Помогите с скриптом

Добавлено: 29 окт 2012, 00:32
collabiao
Мешает то, что нужен рабочий вариант скрипта для Windows Server, в которой просто нет возможности установки Cygwin'а
Понимаю, что глупо звучит и проще поставть Ubuntu на виртуальную машину, но нужен именно для Windows, а не Linux и его эмули

Попробую задать вопрос по другому - есть ли вариант "ручного" добавления изменененых файлов в рамдиск с помощью cpio, скажем как это делает обычный архиватор WinRAR:

Код: Выделить всё

rar.com -a имя_файла имя_архива
Или cpio такое не поддерживает?

Re: Перепаковка рамдиска из скрипта. Помогите с скриптом

Добавлено: 29 окт 2012, 01:35
collabiao
Пробую обновить инит в рамдиске, вот так:
dir /b ..\init.rc | ..\tools\cpio -o -H newc | ..\tools\gzip > ../initrd.gz
Но Windows ругается, что что такого файла нет, хотя он есть
..\tools\cpio: init.rc: No such file or directory
1 block