З огляду на конкретний випадок багатосегментних ZIP- файлів,
це додаткова відповідь до головної .
Як вже було сказано в головній відповіді, лише деякі засоби архівації підтримують розщеплення, а головний графічний інтерфейс, здається, не може створити багатосегментні архіви у zip
форматі. Хоча можна використовувати альтернативні формати, а саме rar
і 7z
.
Крім того, лише деякі інструменти можуть витягувати з багатосегментних zip-файлів, наприклад, ті, що обговорювалися тут: про це дивіться кінцеву примітку до цієї відповіді.
Оскільки питання спеціально вирішує питання обробки архівації з контекстного меню файлового менеджера , я переглянув деякі команди, які могли б досягти поставленої мети навіть для zip
файлів: такі команди, якщо вони будуть успішними, можуть бути легко додані до файлового менеджера як записи контекстного меню.
Враховуючи цей zip
інструмент, багатосегментні архіви можна створити безпосередньо за допомогою команди типу zip my_archive.zip -r <file> -s 20971519
(детальніше під цим питанням ), але вони зовсім не корисні, оскільки не готові до вилучення (потрібна додаткова zip -s 0
команда для створення великих 1- файл, який можна витягти - як описано тут ), і цього обмеження не уникнути. Надсилати такий багатосегментний архів тому, хто цього не знає, безглуздо.
Як вже було запропоновано в головній відповіді, інший спосіб полягає в тому, щоб скопіювати файл, а потім розділити однофайловий архівsplit
(або hjsplit
GUI). (Я протестував графічний інтерфейс, і виявив його надзвичайно повільним, тоді як для цілей контекстного меню 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.