Рассматривая конкретный случай многосегментных ZIP- файлов,
это дополнительный ответ к основному .
Как уже говорилось в основном ответе, только некоторые инструменты архивации поддерживают разбиение, а основной графический интерфейс пользователя не способен создавать многосегментные архивы в zip
формате. Альтернативные форматы могут быть использованы, а именно, rar
и 7z
.
Кроме того, только некоторые инструменты могут извлекать из многосегментных zip-файлов, таких как обсуждаемые здесь: об этом смотрите в конце этого ответа.
Поскольку этот вопрос конкретно касается проблемы обработки архивации из контекстного меню файлового менеджера , я рассмотрел некоторые команды, которые могут достичь данной цели даже для zip
файлов: такие команды, в случае успеха, могут быть легко добавлены в файловый менеджер как пункты контекстного меню.
Учитывая этот zip
инструмент, многосегментные архивы могут быть созданы непосредственно с помощью команды, подобной zip my_archive.zip -r <file> -s 20971519
(более подробно в этом вопросе ), но они совсем не полезны, потому что они не готовы к извлечению (нужна дополнительная zip -s 0
команда для создания большого 1- файл извлекаемый архив - как описано здесь ), и этого ограничения нельзя избежать. Отправлять такой многосегментный архив кому-то, кто этого не знает, бессмысленно.
Как уже предлагалось в основном ответе, другой способ - сжать файл, а затем разделить однофайловый архив сsplit
(или hjsplit
GUI). (Я протестировал графический интерфейс и нашел его очень медленным, хотя для целей контекстного меню графический интерфейс не нужен.)
Идея состоит в том, чтобы добавить в контекстное меню файлового менеджера запись, которая одним щелчком мыши
- сжать выбранные файлы в один
zip
файл,
- разбить zip-файл на части указанного максимального размера и
- удалите его, чтобы сохранить только многофайловый архив.
Итак, я проверил с Thunar и пользовательское действие с этими тремя командами, связанными с &&
:
zip -j my_archive.zip %F && split -b 20m my_archive.zip split.zip && rm my_archive.zip
(Это должно применяться к одному или нескольким выбранным файлам, но не к каталогам; для применения к каталогам необходима zip -r
опция:
zip -r -j my_archive.zip %F && split -b 20m my_archive.zip split.zip && rm my_archive.zip
)
-j
обозначает параметр для zip
«мусорного пути»: в отличие от терминальной команды, содержащей полный путь к архивируемому файлу (файлам), команда контекстного меню, которая используется %F
для выбранных файлов, добавит в архив входящую в папку папку. структура папки, если только -j
она не используется; (источник: создать zip - игнорировать структуру каталогов );
my_archive.zip
пользовательское имя еще не разделенного архива; split
команда будет применена к нему , а затем первые будут удаленыrm
%F
может использоваться в настраиваемом действии Thunar для сжатия нескольких файлов как zip
; альтернативно, %f
должен использоваться для выбора только одного файла;
-b 20m
обозначает размер отдельных частей архива, созданных split
как указано здесь ;
split.zip
это спецификация, которая не нужна; это пользовательское имя конечного многофайлового архива, оно будет давать что-то вроде split.zipaa, split.zipab, split.zipac...
, и без него будет выводиться имя, x
за которым следуют aa
фрагменты-суффиксы: xaa, xab, xac...
и т. д .; есть split
возможность -d
использовать числовые суффиксы вместо буквенных, но это дает ошибку (потому что, очевидно, экстрактор ожидает стандартный многосегментный архив ZIP, когда видит числовой суффикс - как предложено в приватном чате Стивена Китта ;
rm
Приложенный к my_archive.zip
файлу оставит нам только нужный многосегментный архив.
Заметка:
Для извлечения результирующего мульти-zip-архива необходим инструмент, который поддерживает aa
архивы segmentetd , как file-roller
в Linux и 7-Zip в Windows.