Можно ли конвертировать 7z в tar напрямую?

У меня есть файл .7z, содержащий ~ 360 000 изображений в нескольких каталогах. Я хотел бы преобразовать его в .tar, чтобы я мог открыть его на другом компьютере. Есть ли лучший способ, чем извлечь его в файлы и снова сжать? Возможно ли прямое преобразование?

1
задан 18 April 2015 в 12:58

1 ответ

Архивы

.7z - это архивы, которые часто сжимаются с помощью какого-то алгоритма, а архивы .tar - это просто архивы.

Они различаются по своему объему, и в большинстве случаев для преобразования потребуется дополнительная декомпрессия за которым следует извлечение исходного архива. Даже если архив .7z не будет использовать какое-либо сжатие, ему все равно потребуется извлечь.

Если вы хотите, чтобы [распаковать] / извлечь / восстановить исходный архив сразу, ответ вы не можете, по крайней мере, не использовать инструменты Ubuntu по умолчанию, потому что tar не может читать из stdin, поэтому вы не можете пропустить 7z и tar. Во всяком случае, очень легко автоматизировать все в одной команде:

mkdir tmp && 7z x <path_to_source_archive> -otmp && tar cf archive.tar tmp && rm -rf tmp

* & lt; path_to_archive & gt; = путь к исходному .7z архиву

Также время, необходимое для записи файлов исходного архива на диск и для извлеченных файлов, которые нужно читать, чтобы [распаковать] / извлечь / восстановить исходный архив в два этапа является узким местом для всей задачи в основном (хотя и не только) из-за низкой скорости ввода-вывода потенциального диска, поэтому частичным решением было бы хранить временные файлы в ramdisk, чтобы почти аннулировать общий узкое место:

Создайте точку монтирования файловой системы ramdisk: sudo mkdir /mnt/tmpfs Установите файловую систему ramdisk: sudo mount -t tmpfs -o size=<tmpfs_size> tmpfs /mnt/ramdisk * & lt; tmpfs_size & gt; = размер файловой системы в байтах * 103 (1, 1K, 1M, 1G, ...) Запуск mkdir /mnt/tmpfs/tmp && 7z x <path_to_source_archive> -o/mnt/tmpfs/tmp && tar cf archive.tar /mnt/tmpfs/tmp && rm -rf /mnt/tmpfs/tmp * & lt; path_to_archive & gt; = путь к архиву источника .7z Отключите файловую систему ramdisk: sudo umount Удалите точку монтирования файловой системы ramdisk: sudo rmdir /mnt/tmpfs
15
ответ дан 23 May 2018 в 21:16

Другие вопросы по тегам:

Похожие вопросы: