kartorz / utils

Some little util applications most of which are coded by script languages, e.g. python.
1 stars 0 forks source link

Feature request - Extract files out of iso container #1

Closed mbusb closed 10 years ago

mbusb commented 10 years ago

Nice tool. I am looking for a python script which can extracts files out of iso container. It seems like your script can do that (of course with little modification.) Is it possible to extend the functionallity of the script to extract files as well? with command line switch somthing like this: isodump [switch] [iso file] or isodump [iso file] [switch]

kartorz commented 10 years ago

I am really happy for your comment and I would like to do it. But, I am a little busy while, will do it later.

Thanks.

On 02/20/2014 04:09 PM, multibootusb wrote:

Nice tool. I am looking for a python script which can extracts files out of iso container. It seems like your script can do that (of course with little modification.) Is it possible to extend the functionallity of the script to extract files as well? with command line switch somthing like this: isodump [switch] [iso file] or isodump [iso file] [switch]


Reply to this email directly or view it on GitHub: https://github.com/kartorz/utils/issues/1

mbusb commented 10 years ago

Thank you for your reply and promise. Will you mind if I mention your name in the list of contributors in our project multibootusb?

kartorz commented 10 years ago

Thank you, I will be appreciate for that.

On 02/20/2014 07:51 PM, multibootusb wrote:

Thank you for your reply and promise. Will you mind if I mention your name in the list of contributors in our project multibootusb.

Regards. On Feb 20, 2014 4:17 PM, "Joni Lee" notifications@github.com wrote:

I am really happy for your comment and I would like to do it. But, I am a little busy while, will do it later.

Thanks.

On 02/20/2014 04:09 PM, multibootusb wrote:

Nice tool. I am looking for a python script which can extracts files out of iso container. It seems like your script can do that (of course with little modification.) Is it possible to extend the functionallity of the script to extract files as well? with command line switch somthing like this: isodump [switch] [iso file] or isodump [iso file] [switch]


Reply to this email directly or view it on GitHub:

https://github.com/kartorz/utils/issues/1

Reply to this email directly or view it on GitHubhttps://github.com/kartorz/utils/issues/1#issuecomment-35608427 .


Reply to this email directly or view it on GitHub: https://github.com/kartorz/utils/issues/1#issuecomment-35612975

mbusb commented 10 years ago

Here is a work done by "barneygale". Would be useful to you for incorporating extraction feature in to your script. Requested the same feature there too. But have not received any reply.

https://github.com/barneygale/iso9660/blob/master/iso9660.py

Quick update. The script mentioned above does not list all the files from iso. Please cross check with 7zip.

mbusb commented 10 years ago

Here is another link to python script on iso related work. I thought it might me useful to you for further development...

http://pydoc.net/Python/hachoir-parser/1.3.3/hachoir_parser.file_system.iso9660/

kartorz commented 10 years ago

Thanks. I will follow it.

On 02/24/2014 04:34 PM, multibootusb wrote:

Here is another link to python script on iso related work. I thought it might me useful to you for further development...

http://pydoc.net/Python/hachoir-parser/1.3.3/hachoir_parser.file_system.iso9660/


Reply to this email directly or view it on GitHub: https://github.com/kartorz/utils/issues/1#issuecomment-35866209

kartorz commented 10 years ago

Hi, I have done a initial version for extracting files. Because I did a git rebase, You shold do a git reset --hard to init commit, or git clone a new repository, sorry for that.

 Here is the usage:
       python isodump.py   "iso:/"    xx.iso     -- dump the iso root.
       python isodump.py   "iso:/xx"  "/tmp/xx"   xx.iso   -- 

extract xx from iso to /tmp/xx.

 Currently, this script does't support "long file name" --like "RR 

extention", you ok with that ? I will do that later.

Regards

mbusb commented 10 years ago

Will check once I reach home. What does long file name means? Files having longer names? If yes then how many character?

Also, is it able to preserve the case?

Will give a feedback in few hours.

kartorz commented 10 years ago

The Iso File Struct Stanard has a limit for length of file name -- maybe is 32. in order to support long file name, need support iso ententions.

On 02/26/2014 03:32 PM, multibootusb wrote:

Will check once I reach home. What does long file name means? Files having longer names? If yes then how many character?

Also, is it able to preserve the case?

Will give a feedback in few hours.


Reply to this email directly or view it on GitHub: https://github.com/kartorz/utils/issues/1#issuecomment-36098557

Regards

mbusb commented 10 years ago

Sorry. The script does not seems to work at all. Here is the feedback.

[sundar@localhost multibootusb]$ python ./isodump1.py iso:/ ./test ./aTinyCore-4.3.iso [sundar@localhost multibootusb]$ ls ./test [sundar@localhost multibootusb]$ Nothing is being extracted to test directory. Have changed to full path but the result is same.

kartorz commented 10 years ago

I attached my test case and isodump.py

the "iso:/" means the /root directory, It should print all the dir names to terminal. Only extract file. You can use "python ./isodump1.py iso:/ ./aTinyCore-4.3.iso > /.test"

On 02/26/2014 04:11 PM, multibootusb wrote:

Sorry. The script does not seems to work at all. Here is the feedback.

[sundar@localhost multibootusb]$ python ./isodump1.py iso:/ ./test ./aTinyCore-4.3.iso [sundar@localhost multibootusb]$ ls ./test [sundar@localhost multibootusb]$ Nothing is being extracted to test directory. Have changed to full path but the result is same.


Reply to this email directly or view it on GitHub: https://github.com/kartorz/utils/issues/1#issuecomment-36100823

Regards

mbusb commented 10 years ago

Here is what i have got. [sundar@localhost multibootusb]$ python ./isodump1.py iso:/ /media/Data/DISTROS/ubuntu-12.04-desktop-i386.iso > ./test bash: ./test: Is a directory [sundar@localhost multibootusb]$

Can you provide your terminal output?

mbusb commented 10 years ago

Extraction of specific file seems to work. But path to iso file must be CAPITAL. This CAPITAL is an issue as the path to files are case sensitive in Linux.

[sundar@localhost multibootusb]$ python ./isodump1.py iso:/ISOLINUX/ISOLINUX.CFG /tmp/grub.cfg /media/Data/DISTROS/ubuntu-12.04-desktop-i386.iso dump_file(/ISOLINUX/ISOLINUX.CFG)->(/tmp/grub.cfg) dump (/ISOLINUX/ISOLINUX.CFG) to (/tmp/grub.cfg) [sundar@localhost multibootusb]$

[sundar@localhost multibootusb]$ cat /tmp/grub.cfg D-I config version 2.0 include menu.cfg default vesamenu.c32 prompt 0 timeout 50 ui gfxboot bootlogo [sundar@localhost multibootusb]$

kartorz commented 10 years ago

That's what I said "long file name". The CAPITAL file name is the Iso File Standard. This script needs to support "RR extension" or "Extension attribute" to get the "normal" file name. I will fix this later.

On 02/26/2014 04:43 PM, multibootusb wrote:

Extraction of specific file seems to work. But path to iso file must be CAPITAL. This CAPITAL is an issue as the path to files are case sensitive in Linux.

[sundar@localhost multibootusb]$ python ./isodump1.py iso:/ISOLINUX/ISOLINUX.CFG /tmp/grub.cfg /media/Data/DISTROS/ubuntu-12.04-desktop-i386.iso dump_file(/ISOLINUX/ISOLINUX.CFG)->(/tmp/grub.cfg) dump (/ISOLINUX/ISOLINUX.CFG) to (/tmp/grub.cfg) [sundar@localhost multibootusb]$

[sundar@localhost multibootusb]$ cat /tmp/grub.cfg

D-I config version 2.0

include menu.cfg default vesamenu.c32 prompt 0 timeout 50 ui gfxboot bootlogo [sundar@localhost multibootusb]$


Reply to this email directly or view it on GitHub: https://github.com/kartorz/utils/issues/1#issuecomment-36103054

Regards

mbusb commented 10 years ago

I will wait for that ;-)

kartorz commented 10 years ago

Hi, I have finished the RRIP extension. this script can suppport long file name now.

The attachment is my screenshot.

Regards

mbusb commented 10 years ago

where is the screenshot?

kartorz commented 10 years ago

The attachment.

Here are commands: ./isodump.py iso:/ ~/Downloads/NetBSD-6.1.1-i386.iso

 ./isodump.py iso:/sbin/ ~/Downloads/NetBSD-6.1.1-i386.iso

 ./isodump.py iso:/sysinstmsgs.es  /tmp/sysinstmsgs.es 

~/Downloads/NetBSD-6.1.1-i386.iso

 This scripts should work.

 You can use "sha1sum  /mnt/sysinstmsgs.es" to check.

On 02/28/2014 01:47 PM, multibootusb wrote:

where is the screenshot?


Reply to this email directly or view it on GitHub: https://github.com/kartorz/utils/issues/1#issuecomment-36323760

Regards

mbusb commented 10 years ago

OK. Will check in next few hours.

mbusb commented 10 years ago

Thank you for the work you have done. Here is what I have done to test your script. Extracting files out of iso using path works well. But still i am unable to extract all files using "iso:/" option.

[sundar@localhost multibootusb]$ ./isodump.py iso:/boot/isolinux/isolinux.bin ./test/isolinux.bin aTinyCore-4.3.iso read_primary_volume: rrip_offset 0 dump_file(/boot/isolinux/isolinux.bin)->(./test/isolinux.bin) got targe (29, 3800) dump (/boot/isolinux/isolinux.bin) to (./test/isolinux.bin) [sundar@localhost multibootusb]$ ls ./test isolinux.bin [sundar@localhost multibootusb]$

[sundar@localhost multibootusb]$ ./isodump.py iso:/ ./test/ aTinyCore-4.3.iso read_primary_volume: rrip_offset 0 dump_file(/)->(./test/) . .. boot cde

[sundar@localhost multibootusb]$ ls ./test isolinux.bin [sundar@localhost multibootusb]$

kartorz commented 10 years ago

That is what the script does. It just dumps a directory or extracts a file once .

The featuer extracting all file under a directory has not been implemented. If you really need this, I can do it.

On 02/28/2014 04:20 PM, multibootusb wrote:

Thank you for the work you have done. Here is what I have done to test your script. Extracting files out of iso using path works well. But still i am unable to extract all files using "iso:/" option.

[sundar@localhost multibootusb]$ ./isodump.py iso:/boot/isolinux/isolinux.bin ./test/isolinux.bin aTinyCore-4.3.iso read_primary_volume: rrip_offset 0 dump_file(/boot/isolinux/isolinux.bin)->(./test/isolinux.bin) got targe (29, 3800) dump (/boot/isolinux/isolinux.bin) to (./test/isolinux.bin)

[sundar@localhost multibootusb]$ ./isodump.py iso:/ ./test/ aTinyCore-4.3.iso read_primary_volume: rrip_offset 0 dump_file(/)->(./test/) . .. boot cde

[sundar@localhost multibootusb]$ ls ./test isolinux.bin [sundar@localhost multibootusb]$


Reply to this email directly or view it on GitHub: https://github.com/kartorz/utils/issues/1#issuecomment-36330079

Regards

mbusb commented 10 years ago

"The featuer extracting all file under a directory has not been implemented. If you really need this, I can do it."

This what exactly I require. Extract all files out of iso container to the destination directory.

I have noticed that your script only list top lever directory/files based on the parameter provided by the user. For example if i give "iso:/" as an option then i get following:- [sundar@localhost multibootusb]$ ./isodump.py iso:/ aTinyCore-4.3.iso read_primary_volume: rrip_offset 0 dump_file(/)->() . .. boot cde and when i give "iso:/boot" then i get list of file and directories under "boot":- [sundar@localhost multibootusb]$ ./isodump.py iso:/boot ./test/ aTinyCore-4.3.iso read_primary_volume: rrip_offset 0 dump_file(/boot)->(./test/) got targe (1e, 800) . .. core.gz isolinux vmlinuz

Is it possible to list all files and directories from iso container with single option? For example, here is the output of the script "iso9660.py" I mentioned earlier in the post (you can ignore the CASE which have been implemented in your script):- [sundar@localhost multibootusb]$ ./iso9660.py aTinyCore-4.3.iso / /BOOT /BOOT/CORE.GZ /BOOT/ISOLINUX /BOOT/ISOLINUX/BOOT.CAT /BOOT/ISOLINUX/BOOT.MSG /BOOT/ISOLINUX/F2. /BOOT/ISOLINUX/F3. /BOOT/ISOLINUX/F4. /BOOT/ISOLINUX/ISOLINUX.BIN /BOOT/ISOLINUX/ISOLINUX.CFG /BOOT/VMLINUZ. /CDE /CDE/COPY2FS.LST /CDE/ONBOOT.LST /CDE/OPTIONAL /CDE/OPTIONAL/FLTK_1_10.TCZ /CDE/OPTIONAL/FLTK_1_10_TCZ_MD5.TXT /CDE/OPTIONAL/FLWM_TOPSIDE.TCZ /CDE/OPTIONAL/FLWM_TOPSIDE_TCZ_MD5.TXT /CDE/OPTIONAL/WBAR.TCZ /CDE/OPTIONAL/WBAR_TCZ_MD5.TXT /CDE/OPTIONAL/XLIBS.TCZ /CDE/OPTIONAL/XLIBS_TCZ_MD5.TXT /CDE/OPTIONAL/XPROGS.TCZ /CDE/OPTIONAL/XPROGS_TCZ_MD5.TXT /CDE/OPTIONAL/XVESA.TCZ /CDE/OPTIONAL/XVESA_TCZ_MD5.TXT /CDE/XBASE.LST

kartorz commented 10 years ago

I got this. You mean extract all the files recursively under some directory.

It may take a while to implement.

On 02/28/2014 04:48 PM, multibootusb wrote:

"The featuer extracting all file under a directory has not been implemented. If you really need this, I can do it."

This what exactly I require. Extract all files out of iso container to the destination directory.

I have noticed that your script only list top lever directory/files based on the parameter provided by the user. For example if i give "iso:/" as an option then i get following:- [sundar@localhost multibootusb]$ ./isodump.py iso:/ aTinyCore-4.3.iso read_primary_volume: rrip_offset 0 dump_file(/)->() . .. boot cde and when i give "iso:/boot" then i get list of file and directories under "boot":- [sundar@localhost multibootusb]$ ./isodump.py iso:/boot ./test/ aTinyCore-4.3.iso read_primary_volume: rrip_offset 0 dump_file(/boot)->(./test/) got targe (1e, 800) . .. core.gz isolinux vmlinuz

Is it possible to list all files and directories from iso container with single option? For example, here is the output of the script "iso9660.py" I mentioned earlier in the post (you can ignore the CASE which have been implemented in your script):- [sundar@localhost multibootusb]$ ./iso9660.py aTinyCore-4.3.iso / /BOOT /BOOT/CORE.GZ /BOOT/ISOLINUX /BOOT/ISOLINUX/BOOT.CAT /BOOT/ISOLINUX/BOOT.MSG /BOOT/ISOLINUX/F2. /BOOT/ISOLINUX/F3. /BOOT/ISOLINUX/F4. /BOOT/ISOLINUX/ISOLINUX.BIN /BOOT/ISOLINUX/ISOLINUX.CFG /BOOT/VMLINUZ. /CDE /CDE/COPY2FS.LST /CDE/ONBOOT.LST /CDE/OPTIONAL /CDE/OPTIONAL/FLTK_1_10.TCZ /CDE/OPTIONAL/FLTK_1_10_TCZ_MD5.TXT /CDE/OPTIONAL/FLWM_TOPSIDE.TCZ /CDE/OPTIONAL/FLWM_TOPSIDE_TCZ_MD5.TXT /CDE/OPTIONAL/WBAR.TCZ /CDE/OPTIONAL/WBAR_TCZ_MD5.TXT /CDE/OPTIONAL/XLIBS.TCZ /CDE/OPTIONAL/XLIBS_TCZ_MD5.TXT /CDE/OPTIONAL/XPROGS.TCZ /CDE/OPTIONAL/XPROGS_TCZ_MD5.TXT /CDE/OPTIONAL/XVESA.TCZ /CDE/OPTIONAL/XVESA_TCZ_MD5.TXT /CDE/XBASE.LST


Reply to this email directly or view it on GitHub: https://github.com/kartorz/utils/issues/1#issuecomment-36331586

Regards

mbusb commented 10 years ago

OK. I will wait again. ;-(

kartorz commented 10 years ago

Hi, I have done the feature extracting a directory to local. Currently, only support regular files, Non-regular files(like device file) can't been extracted.

 Here are the usage:
     ./isodump.py  iso:/  -r -o  xx/    xx.iso    : Extract  root 

directory recursively to xx/

      output:

///write file (/tmp/iso/boot/grub/grub.cfg)// // write file (/tmp/iso/linix.img)// // write_dir(/)->(/tmp/iso)/

     ./isodump.py  iso:/  -o  xx/    xx.iso    : Extract only root 

directory to xx

       output:

/write file (/tmp/iso/linix.img) /

     ./isodump.py  iso:/   -r  xx.iso                : Dump root 

directory recursively

       output:

//boot// // /boot/grub// // /boot/grub/grub.cfg// ///linix.img/

    ./isodump.py  iso:/    xx.iso                 : Dump only root 

directory.

        output:

/ /boot// // /linix.img/

Regards

mbusb commented 10 years ago

Hi, Tested the latest script. Works very well. Calculated extraction time with 7zip and to my surprise, your script beaten 7zip in few cases. Here is the test case:-

[sundar@localhost multibootusb]$ du -h ../Downloads/distros/Mageia-4-LiveDVD-KDE4-x86_64-DVD.iso 1.5G ../Downloads/distros/Mageia-4-LiveDVD-KDE4-x86_64-DVD.iso [sundar@localhost multibootusb]$

[sundar@localhost multibootusb]$ rm -r ./test/* [sundar@localhost multibootusb]$ ls ./test [sundar@localhost multibootusb]$ time ./isodump.py iso:/ -r -o ./test ../Downloads/distros/Mageia-4-LiveDVD-KDE4-x86_64-DVD.iso RRIP: rrip_offset 0 write file (./test/boot/cdrom/initrd.gz) . . write file (./test/loopbacks/distrib-lzma.sqfs) write_dir(/)->(./test)

real 1m2.642s user 0m3.781s sys 0m4.299s [sundar@localhost multibootusb]$ rm -r ./test/* [sundar@localhost multibootusb]$ ls ./test [sundar@localhost multibootusb]$ time ./tools/7zip/linux/7z x ../Downloads/distros/Mageia-4-LiveDVD-KDE4-x86_64-DVD.iso -y -o./test

7-Zip 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)

Processing archive: ../Downloads/distros/Mageia-4-LiveDVD-KDE4-x86_64-DVD.iso

Extracting EFI Extracting EFI/boot . . Extracting loopbacks Extracting loopbacks/distrib-lzma.sqfs Extracting [BOOT]/Bootable_NoEmulation.img

Everything is Ok

Folders: 9 Files: 112 Size: 1599796418 Compressed: 1600126976

real 1m2.755s user 0m0.072s sys 0m3.362s [sundar@localhost multibootusb]$

So 1m2.642s != 1m2.755s.

On other ISO files, I did not find any major time difference between your script and 7zip. It is more or less same. However, it would be easier to integrate your module in to python script. Also, it reduces few MB on final executable. More specifically:- [sundar@localhost multibootusb]$ du -h ./tools/7zip/linux/ 3.3M ./tools/7zip/linux/

Here is another reason why I came here for the help:- [sundar@localhost multibootusb]$ file ../../../media/Debian/home/sundar/openSUSE-13.1-KDE-Live-x86_64.iso ../../../media/Debian/home/sundar/openSUSE-13.1-KDE-Live-x86_64.iso: ISO 9660 CD-ROM filesystem data 'openSUSE 13.1 KDE Live ' (bootable) [sundar@localhost multibootusb]$ [sundar@localhost multibootusb]$ time ./isodump.py iso:/ -r -o ./test ../../../media/Debian/home/sundar/openSUSE-13.1-KDE-Live-x86_64.iso . . write file (./test/boot/grub2-efi/x86_64-efi/efinet.module) write file (./test/boot/grub2-efi/x86_64-efi/efinet.mod) write file (./test/boot/grub2-efi/x86_64-efi/efi_gop.module) write file (./test/boot/grub2-efi/x86_64-efi/efi_gop.mod) write file (./test/boot/grub2-efi/x86_64-efi/efi_uga.module) write file (./test/boot/grub2-efi/x86_64-efi/efi_uga.mod) write file (./test/boot/grub2-efi/x86_64-efi/ehci.module) write file (./test/boot/grub2-efi/x86_64-efi/ehci.mod) write file (./test/boot/grub2-efi/x86_64-efi/fat.mod) . . Basically I could extract files out of latest openSuse ISO. But 7zip could not do the same. Here is the result:- [sundar@localhost multibootusb]$ time ./tools/7zip/linux/7z x ../../../media/Debian/home/sundar/openSUSE-13.1-KDE-Live-x86_64.iso -y -o./test

7-Zip 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)

Processing archive: ../../../media/Debian/home/sundar/openSUSE-13.1-KDE-Live-x86_64.iso

Extracting 0.img Extracting 1.img

Everything is Ok

Files: 2 Size: 985667584 Compressed: 987758592

real 0m36.876s user 0m0.086s sys 0m2.014s [sundar@localhost multibootusb]$

Therefore, your script is again performed much better that 7zip.

You said that " Currently, only support regular files, Non-regular files(like device file) can't been extracted.". But I need to check this out with various linux ISO's to make sure that it does not affect boot process.

It is time to integrate your script to multibootusb. Oops, you have not mentioned about licence.

I personally feel that you need to amend your script command line argument to make it simple. I will post on this later.

Thank you for for the work you have done. :+1:

mbusb commented 10 years ago

Another feature request.

Is it possible to extract specific file type? For example if I specify .cfg, script should extract all files ending with ".cfg" to local directory. Or if I specify "boot" (which can be file or directory), script should extract all files/ directory named "boot" to local directory. It is an another mandatory requirement to get rid of 7zip as multibootusb extracts .cfg files for identifying distro type and later extracts only certain directory (like "boot") on certain distros.

kartorz commented 10 years ago

I got this.

On 03/05/2014 10:03 AM, multibootusb wrote:

Another feature request.

Is it possible to extract specific file type? For example if I specify .cfg, script should extract all files ending with ".cfg" to local directory. Or if I specify "boot" (which can be file or directory), script should extract all files/ directory named "boot" to local directory. It is an another mandatory requirement to get rid of 7zip as multibootusb extracts .cfg files for identifying distro type and later extracts only certain directory (like "boot") on certain distros.


Reply to this email directly or view it on GitHub: https://github.com/kartorz/utils/issues/1#issuecomment-36702737

Regards

mbusb commented 10 years ago

"I got this." Does it meant that you have this feature already or got this idea?

kartorz commented 10 years ago

On 03/05/2014 09:45 AM, multibootusb wrote:

Hi, Tested the latest script. Works very well. Calculated extraction time with 7zip and to my surprise, your script beaten 7zip in few cases. Here is the test case:-

[sundar@localhost multibootusb]$ du -h ../Downloads/distros/Mageia-4-LiveDVD-KDE4-x86_64-DVD.iso 1.5G ../Downloads/distros/Mageia-4-LiveDVD-KDE4-x86_64-DVD.iso [sundar@localhost multibootusb]$

[sundar@localhost multibootusb]$ rm -r ./test/* [sundar@localhost multibootusb]$ ls ./test [sundar@localhost multibootusb]$ time ./isodump.py iso:/ -r -o ./test ../Downloads/distros/Mageia-4-LiveDVD-KDE4-x86_64-DVD.iso RRIP: rrip_offset 0 write file (./test/boot/cdrom/initrd.gz) . . write file (./test/loopbacks/distrib-lzma.sqfs) write_dir(/)->(./test)

real 1m2.642s user 0m3.781s sys 0m4.299s [sundar@localhost multibootusb]$ rm -r ./test/* [sundar@localhost multibootusb]$ ls ./test [sundar@localhost multibootusb]$ time ./tools/7zip/linux/7z x ../Downloads/distros/Mageia-4-LiveDVD-KDE4-x86_64-DVD.iso -y -o./test

7-Zip 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)

Processing archive: ../Downloads/distros/Mageia-4-LiveDVD-KDE4-x86_64-DVD.iso

Extracting EFI Extracting EFI/boot . . Extracting loopbacks Extracting loopbacks/distrib-lzma.sqfs Extracting [BOOT]/Bootable_NoEmulation.img

Everything is Ok

Folders: 9 Files: 112 Size: 1599796418 Compressed: 1600126976

real 1m2.755s user 0m0.072s sys 0m3.362s [sundar@localhost multibootusb]$

So 1m2.642s != 1m2.755s.

On other ISO files, I did not find any major time difference between your script and 7zip. It is more or less same. However, it would be easier to integrate your module in to python script. Also, it reduces few MB on final executable. More specifically:- [sundar@localhost multibootusb]$ du -h ./tools/7zip/linux/ 3.3M ./tools/7zip/linux/

Here is another reason why I came here for the help:- [sundar@localhost multibootusb]$ file ../../../media/Debian/home/sundar/openSUSE-13.1-KDE-Live-x86_64.iso ../../../media/Debian/home/sundar/openSUSE-13.1-KDE-Live-x86_64.iso: ISO 9660 CD-ROM filesystem data 'openSUSE 13.1 KDE Live ' (bootable) [sundar@localhost multibootusb]$ [sundar@localhost multibootusb]$ time ./isodump.py iso:/ -r -o ./test ../../../media/Debian/home/sundar/openSUSE-13.1-KDE-Live-x86_64.iso . . write file (./test/boot/grub2-efi/x86_64-efi/efinet.module) write file (./test/boot/grub2-efi/x86_64-efi/efinet.mod) write file (./test/boot/grub2-efi/x86_64-efi/efi_gop.module) write file (./test/boot/grub2-efi/x86_64-efi/efi_gop.mod) write file (./test/boot/grub2-efi/x86_64-efi/efi_uga.module) write file (./test/boot/grub2-efi/x86_64-efi/efi_uga.mod) write file (./test/boot/grub2-efi/x86_64-efi/ehci.module) write file (./test/boot/grub2-efi/x86_64-efi/ehci.mod) write file (./test/boot/grub2-efi/x86_64-efi/elf.mod) write file (./test/boot/grub2-efi/x86_64-efi/elf.module) write file (./test/boot/grub2-efi/x86_64-efi/eval.module) write file (./test/boot/grub2-efi/x86_64-efi/eval.mod) write file (./test/boot/grub2-efi/x86_64-efi/exfat.mod) write file (./test/boot/grub2-efi/x86_64-efi/exfat.module) write file (./test/boot/grub2-efi/x86_64-efi/exfctest.module) write file (./test/boot/grub2-efi/x86_64-efi/exfctest.mod) write file (./test/boot/grub2-efi/x86_64-efi/ext2.module) write file (./test/boot/grub2-efi/x86_64-efi/ext2.mod) write file (./test/boot/grub2-efi/x86_64-efi/extcmd.mod) write file (./test/boot/grub2-efi/x86_64-efi/extcmd.module) write file (./test/boot/grub2-efi/x86_64-efi/fat.module) write file (./test/boot/grub2-efi/x86_64-efi/fat.mod) . . Basically I could extract files out of latest openSuse ISO. But 7zip could not do the same. Here is the result:- [sundar@localhost multibootusb]$ time ./tools/7zip/linux/7z x ../../../media/Debian/home/sundar/openSUSE-13.1-KDE-Live-x86_64.iso -y -o./test

7-Zip 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,4 CPUs)

Processing archive: ../../../media/Debian/home/sundar/openSUSE-13.1-KDE-Live-x86_64.iso

Extracting 0.img Extracting 1.img

Everything is Ok

Files: 2 Size: 985667584 Compressed: 987758592

real 0m36.876s user 0m0.086s sys 0m2.014s [sundar@localhost multibootusb]$

Therefore, your script is again performed much better that 7zip.

You said that " Currently, only support regular files, Non-regular files(like device file) can't been extracted.". But I need to check this out with various linux ISO's to make sure that it does not affect boot process.

I would work on this feature later if this script can meet your need.

It is time to integrate your script to multibootusb. Oops, you have not mentioned about licence.

I personally feel that you need to amend your script command line argument to make it simple. I will post on this later.

Thank you for for the work you have done. :+1: Thanks. It's a open source code. GPL, BSD Licences will do.


Reply to this email directly or view it on GitHub: https://github.com/kartorz/utils/issues/1#issuecomment-36701797

Regards

kartorz commented 10 years ago

I got this idea and will do it right now, It's just a little code work.

On 03/05/2014 10:14 AM, multibootusb wrote:

"I got this." Does it meant that you have this feature already or got this idea?


Reply to this email directly or view it on GitHub: https://github.com/kartorz/utils/issues/1#issuecomment-36703270

Regards

kartorz commented 10 years ago

On 03/05/2014 10:03 AM, multibootusb wrote:

Another feature request.

Is it possible to extract specific file type? For example if I specify .cfg, script should extract all files ending with ".cfg" to local directory. Or if I specify "boot" (which can be file or directory), script should extract all files/ directory named "boot" to local directory. It is an another mandatory requirement to get rid of 7zip as multibootusb extracts .cfg files for identifying distro type and later extracts only certain directory (like "boot") on certain distros. I have finished this feature by append a option -p for Regular Expression Operations. Here are the usage: ./isodump.py iso:/ -r -o /xx -p "cfg" xx.iso

It seems  "*.cfg" is not a right expression. You can use "cfg" 

instead, or write a accurate expression.

More detail about Regular Expression Operations in python, please 

refer this page: http://docs.python.org/2/library/re.html#re.compile


Reply to this email directly or view it on GitHub: https://github.com/kartorz/utils/issues/1#issuecomment-36702737

Regards

mbusb commented 10 years ago

Great. Will check it out when I get time.

mbusb commented 10 years ago

Tested the script and working very well. The regular expression option is not even supported in 7zip. Excellent. Thank you again. :+1:

How about testing the integrity of an ISO? This will help multibootusb to identify if downloaded ISO is not corrupted. I use "t" option from 7zip to check this feature as of now.

I think I am pushing you too much :-(

mbusb commented 10 years ago

I know it is a dump question. But how do I call your script function from multibootusb? Here is what I tried:- import isodump iso_file = "aTinyCore-4.3.iso" out_dir = "test" r=True pattern="" isodump.write_dir(iso_file, out_dir, r, pattern) # need to extract iso file to destination directory. print isodump.dump_dir(iso_file, r=True) # even dumping dir also not executed. Prints None

Some example on calling isodump function from other script would be of great help.

kartorz commented 10 years ago

On 03/06/2014 08:45 AM, multibootusb wrote:

Tested the script and working very well. The regular expression option is not even supported in 7zip. Excellent. Thank you again. :+1:

How about testing the integrity of an ISO? This will help multibootusb to identify if downloaded ISO is not corrupted. I use "t" option from 7zip to check this feature as of now.

I think I am pushing you too much :-(


Reply to this email directly or view it on GitHub: https://github.com/kartorz/utils/issues/1#issuecomment-36813183 Thanks. I will do it in the future.

Regards

kartorz commented 10 years ago

Hi,

I have commited a new change to fix this. You can use either main() or extract_directory() Here is the usage: / // import isodump// //// // argv = ["isodump.py", "iso:/", "-r", "-o", "/tmp/iso", "xx.iso"]// // isodump.main(argv)// // or // // isodump.extract_directory("iso:/", "/tmp/iso", "xx.iso", "bin")/
-- "bin" is a Regular Expression Pattern. default is "". / isodump.extract_directory("iso:/", "/tmp/iso", "xx.iso")/

On 03/06/2014 09:14 AM, multibootusb wrote:

I know it is a dump question. But how do I call your script function from multibootusb? Here is what I tried:- import isodump iso_file = "aTinyCore-4.3.iso" out_dir = "test" r=True pattern="" isodump.write_dir(iso_file, out_dir, r, pattern) # need to extract iso file to destination directory. print isodump.dump_dir(iso_file, r=True) # even dumping dir also not executed. Prints None

Some example on calling isodump function from other script would be of great help.


Reply to this email directly or view it on GitHub: https://github.com/kartorz/utils/issues/1#issuecomment-36814937

Regards

mbusb commented 10 years ago

Great again. Will report feedback later.

mbusb commented 10 years ago

Tested the latest script. Works well as expected :+1: Closing the issue now as it is getting difficult to scroll down in my phone. However, opening another one. :-)