Cách chuyển đổi tệp TAR thành tệp ISO


9

Tôi có tệp Linux TAR mà tôi muốn chuyển đổi trực tiếp thành ISO. Có cách nào để làm điều này, tốt nhất là, mà không phải trích xuất nội dung của tập tin trước?

Điều này sẽ tương tự như câu hỏi sau đây ; tuy nhiên, điều này tập trung vào các tệp tar đơn giản hoặc thẳng và không liên quan đến bzip hoặc tar được giải nén.

Đây cũng là thứ mà tôi dự định sử dụng trong một kịch bản và lý do mà tôi không muốn trích xuất nó trước.


Về mặt lý thuyết có thể được thực hiện mà không cần phải trích xuất từng tệp vào đĩa (chúng phải được trích xuất từ ​​kho lưu trữ để đưa vào hình ảnh mới), nhưng tôi không biết bất cứ điều gì xảy ra.
Ignacio Vazquez-Abrams

Tại sao bạn muốn làm điều này mà không giải nén tar?
Nils

Tôi tự hỏi nếu có một cách để dẫn nó đến một cái gì đó như stdin và sau đó chuyển nó sang tập tin iso ???
Giăng

Tôi không chắc chắn nếu điều này sẽ làm việc hay không, vì tôi không chắc chắn 100% rằng lệnh đang làm gì. - tar -jxf / dev / stdin file.tar | mkisofs -o file.iso -stream-media-size 512
John

Tùy chọn kích thước phương tiện truyền thông thực sự được thực hiện cho việc này! :-) Xem trang man genisoimage để biết thông tin - hiện tại nó đề cập đến tar trong tài liệu cho tùy chọn này (và sử dụng nó trong các ví dụ cho nó).
Abbafei

Câu trả lời:


6

Sử dụng AVFS để truy cập nội dung của kho lưu trữ tar như thể nó là một thư mục. AVFS là một hệ thống tập tin ảo được xây dựng trên FUSE . Trỏ công cụ xây dựng ISO yêu thích của bạn vào thư mục bên trong kho lưu trữ tar.

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

@ Gilles - cảm ơn vì ý tưởng Điều này có vẻ như nó có thể là một ý tưởng tuyệt vời; tuy nhiên, tôi đang sử dụng CentOS 6 và đang gặp sự cố khi cài đặt AVFS.
Giăng

1

Nếu mục tiêu chính của bạn là đẩy nhanh quá trình và tránh hoạt động đĩa không cần thiết vì lý do hiệu suất bạn có nhiều RAM để dự phòng so với kích thước của tarball, bạn có thể trích xuất .tar vào RAM bằng tmpfs . Tùy chọn này rất có thể là khả năng nhanh nhất khả dụng, trừ khi bạn có thể khiến phương pháp đường ống của @ bulleric hoạt động bạn đang đọc từ đĩa này và ghi vào đĩa khác.


0
archivemount /file.tar /media/ISO

hoặc không nén .tar

genisoimage -o myfile.iso directory_src

( có thể là thư mục /media/ISO hoặc điểm gắn kết /media/cdrom )


-2

Bạn phải giải nén nó nhưng bạn không phải giải nén nó vào ổ cứng của mình, bạn có thể sử dụng thiết bị xuất chuẩn và chuyển nó sang genisoimage hoặc mkisofs

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

kiểm tra nó mount -o loop image.iso /mnt

bạn có thể viết một đoạn script nhỏ để tự động hóa vấn đề này

bò đực


Và làm thế nào nó sẽ nói với một tập tin từ tiếp theo?
Ignacio Vazquez-Abrams

Khi tôi chạy cái này, tôi gặp một loạt lỗi, đầu tiên là: tar: Bạn phải chỉ định một trong các -Acdtrux' or tùy chọn --test-nhãn '. Lỗi tiếp theo là: I: -input-charset không được chỉ định, sử dụng utf-8 (được phát hiện trong cài đặt ngôn ngữ). Lỗi cuối cùng là: genisoimage: Không có tệp hoặc thư mục như vậy. Nút không hợp lệ - 'tareddata'.
Giăng

vấn đề đầu tiên tôi solvet tôi đã có một lựa chọn sai trong tar; Theo ý kiến ​​của tôi, thư mục thứ hai được trích xuất cùng tên với thư mục không bị thu hút như tardata.tar tardata
bulleric

Xin lỗi, tôi khá chắc chắn rằng không có cách nào có thể làm việc này; -1.
MadHatter
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.