Bagaimana mengkonversi file TAR menjadi file ISO


9

Saya memiliki file TAR Linux yang ingin saya konversi langsung menjadi ISO. Apakah ada cara untuk melakukan ini, lebih disukai, tanpa harus mengekstraksi isi file terlebih dahulu?

Ini akan mirip dengan pertanyaan berikut ; Namun, ini difokuskan pada file tar polos atau straight-up dan tidak terkait dengan bzip atau tar bzipped.

Ini juga sesuatu yang ingin saya gunakan dalam skrip dan alasan saya tidak ingin mengekstraknya terlebih dahulu.


Secara teoritis itu bisa dilakukan tanpa harus mengekstrak masing-masing file ke disk (mereka harus diekstraksi dari arsip untuk dimasukkan ke dalam gambar baru), tetapi saya tidak tahu apa-apa.
Ignacio Vazquez-Abrams

Mengapa Anda ingin melakukan ini tanpa mengekstrak tar?
Nils

Saya ingin tahu apakah ada cara untuk mem-pipe-nya ke sesuatu seperti stdin dan kemudian mem-pipe-nya ke file iso ???
John

Saya tidak yakin apakah ini akan berhasil atau tidak, karena saya tidak 100% pasti apa yang dilakukan perintah. - tar -jxf / dev / stdin file.tar | mkisofs -o file.iso -stream-media-size 512
John

Opsi -stream-media-size sebenarnya dibuat untuk ini! :-) Lihat halaman manual genisoimage untuk info - saat ini ia menyebutkan tar dalam dokumen untuk opsi ini (dan menggunakannya dalam contoh untuk itu).
Abbafei

Jawaban:


6

Gunakan AVFS untuk mengakses konten arsip tar seolah itu adalah direktori. AVFS adalah sistem file virtual yang dibangun di atas FUSE . Arahkan pembuat ISO favorit Anda ke direktori di dalam arsip tar.

mountavfs
cd ~/.avfs/path/to/archive.tar\#
genisoimage -o /path/to/iso .

@ Gilles - terima kasih atas idenya. Ini sepertinya ide yang bagus; namun, saya menggunakan CentOS 6 dan mengalami masalah saat mencoba menginstal AVFS.
John

1

Jika tujuan utama Anda adalah untuk mempercepat proses dan untuk menghindari aktivitas disk yang tidak perlu karena alasan kinerja, dan Anda memiliki banyak RAM untuk disimpan relatif terhadap ukuran tarball Anda, Anda dapat mengekstrak .tar ke dalam RAM menggunakan tmpfs . Opsi ini sangat mungkin merupakan yang tercepat yang tersedia, kecuali jika Anda bisa mendapatkan pendekatan pipa @ bulleric untuk bekerja dan Anda membaca dari satu disk dan menulis ke disk lain.


0
archivemount /file.tar /media/ISO

atau .tar terkompresi dan

genisoimage -o myfile.iso directory_src

( bisa berupa folder /media/ISO atau titik mount /media/cdrom )


-2

Anda harus mengekstraknya tetapi Anda tidak harus mengekstraknya ke hard drive Anda, Anda dapat menggunakan stdtout dan menyalurkannya ke genisoimage atau mkisofs

tar --to-stdout xf tareddata.tar | genisoimage -o image.iso tareddata

menguji: mount -o loop image.iso /mnt

Anda dapat menulis skrip kecil untuk mengotomatiskan masalah ini

greez bull


Dan bagaimana cara mengetahui satu file dari yang berikutnya?
Ignacio Vazquez-Abrams

Ketika saya menjalankan ini saya mendapatkan serangkaian kesalahan, yang pertama adalah: tar: Anda harus menentukan salah satu opsi -Acdtrux' or --test-label '. Kesalahan berikutnya adalah: I: -input-charset tidak ditentukan, menggunakan utf-8 (terdeteksi pada pengaturan lokal). Kesalahan terakhir adalah: genisoimage: Tidak ada file atau direktori tersebut. Node tidak valid - 'tareddata'.
John

masalah pertama saya solvet saya telah mengambil opsi yang salah di tar; yang ke-2 hmm menurut saya direktori pertama dapat extractet dengan nama yang sama dengan direktori yang tidak diekstrak seperti tardata.tar tardata
bulleric

Maaf, saya cukup yakin tidak mungkin ini bekerja; -1.
MadHatter
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.