Это «самораспаковывающиеся -» архивы; первый, который я нашел, имеет этот код вверху:
#!/bin/sh
echo "Optware Bootstrap for syno-i686."
echo "Extracting archive... please wait"
dd if=$0 bs=205 skip=1 | tar xzv
cd bootstrap && sh bootstrap.sh && cd.. && rm -r bootstrap
exec /bin/sh --login
... что указывает на то, что это в основном (большой )сценарий оболочки, где интересной частью является строка dd... | tar xzv
; другие строки относятся к этому конкретному пакету.
Команда dd
читает из$0
--текущего файла --, пропуская правильное количество байтов; этот вывод затем отправляется tar
, который ожидает сжатый архив. Сжатый файл tar был вставлен точно в эту позицию в файле xsh.
Чтобы просмотреть/распаковать его самостоятельно, просто следуйте тем же инструкциям --, которые зависят от файла xsh! --а именно:
$ dd if=syno-i686-bootstrap_1.2-7_i686.xsh bs=205 skip=1 > bootstrap.tgz
$ gunzip bootstrap.tgz ## for example
$ tar tf bootstrap.tar ## for example
bootstrap/
bootstrap/bootstrap.sh
bootstrap/ipkg-opt.ipk
bootstrap/ipkg.sh
...
В качестве немного более общего правила для извлечения архивов вы можете найти эту dd
сигнатуру, говорящую grep
, что можно вывести совпадение в этот "двоичный" файл :
$ grep -a '^dd if=$0' syno-i686-bootstrap_1.2-7_i686.xsh
dd if=$0 bs=205 skip=1 | tar xzv
... который вы можете скопировать/вставить для просмотра или извлечения содержимого по своему усмотрению. Вас также могут заинтересовать другие выполняемые команды; просмотрите их аналогично, снова с --, характерными для этого примера:
$ dd if=syno-i686-bootstrap_1.2-7_i686.xsh bs=205 count=1
#!/bin/sh
echo "Optware Bootstrap for syno-i686."
echo "Extracting archive... please wait"
dd if=$0 bs=205 skip=1 | tar xzv
cd bootstrap && sh bootstrap.sh && cd.. && rm -r bootstrap
exec /bin/sh --login
1+0 records in
1+0 records out
205 bytes (205 B) copied, 4.7985e-05 s, 4.3 MB/s