Biorąc pod uwagę szczególny przypadek wielosegmentowych plików ZIP ,
jest to odpowiedź uzupełniająca do głównej .
Jak już stwierdzono w głównej odpowiedzi, tylko niektóre narzędzia do archiwizacji obsługują dzielenie, a główny GUI nie wydaje się być w stanie tworzyć archiwów wielosegmentowych w zip
formacie. Można jednak użyć alternatywnych formatów, a mianowicie rar
i 7z
.
Ponadto tylko niektóre narzędzia mogą wyodrębnić pliki zip z wielu segmentów, takie jak te omówione tutaj: na ten temat patrz uwaga końcowa do tej odpowiedzi.
Ponieważ pytanie dotyczy konkretnie problemu z archiwizacją z menu kontekstowego menedżera plików , przyjrzałem się niektórym poleceniom, które mogłyby osiągnąć określony cel nawet dla zip
plików: takie polecenia, jeśli się powiedzie, można łatwo dodać do menedżera plików jako pozycje menu kontekstowego.
Biorąc pod uwagę zip
narzędzie, archiwa wielosegmentowe można tworzyć bezpośrednio za pomocą polecenia typu zip my_archive.zip -r <file> -s 20971519
(więcej szczegółów w tym pytaniu ), ale nie są one w ogóle przydatne, ponieważ nie są gotowe do rozpakowania (potrzebne jest dodatkowe zip -s 0
polecenie, aby utworzyć duże 1- plik archiwum do wyodrębnienia - jak opisano tutaj ) i tego ograniczenia nie można uniknąć. Wysłanie takiego wielosegmentowego archiwum do kogoś, kto nie wie, że to nie ma sensu.
Jak już zasugerowano w głównej odpowiedzi, innym sposobem jest skompresowanie pliku, a następnie podzielenie archiwum jednego pliku za pomocąsplit
(lub hjsplit
GUI). (Przetestowałem GUI i stwierdziłem, że jest on bardzo wolny, natomiast do celów menu kontekstowego GUI nie jest potrzebny).
Chodzi o to, aby dodać do menu kontekstowego menedżera plików pozycję, która wystarczy jednym kliknięciem
- kompresuj wybrane pliki jako pojedynczy
zip
plik,
- podzielić plik zip na części o określonym maksymalnym rozmiarze i
- usuń go, aby zachować tylko archiwum z wieloma plikami.
Testowałem więc z Thunarem i niestandardową akcją z tymi trzema poleceniami połączonymi przez &&
:
zip -j my_archive.zip %F && split -b 20m my_archive.zip split.zip && rm my_archive.zip
(Należy to zastosować do jednego lub więcej wybranych plików, ale nie do katalogów; aby zastosować do katalogów, zip -r
potrzebna jest opcja:
zip -r -j my_archive.zip %F && split -b 20m my_archive.zip split.zip && rm my_archive.zip
)
-j
oznacza opcję zip
„śmieciowej ścieżki”: w przeciwieństwie do komendy terminalowej zawierającej pełną ścieżkę plików, które mają być zarchiwizowane, polecenie menu kontekstowego używane %F
dla wybranych plików dodałoby do archiwum folder-in -folder struktura, o ile nie -j
jest używana; (źródło: twórz zip - ignoruj strukturę katalogów );
my_archive.zip
to nazwa niestandardowa niepodzielonego jeszcze archiwum; split
polecenie zostanie przyłożona do niego, a następnie były zostanie usuniętyrm
%F
może być użyty w niestandardowej akcji Thunar w celu skompresowania wielu plików jako zip
; alternatywnie, %f
należy użyć do wyboru tylko jednego pliku;
-b 20m
oznacza rozmiar oddzielnych części archiwum utworzonych przez, split
jak wskazano tutaj ;
split.zip
jest specyfikacją, która nie jest potrzebna; jest to niestandardowa nazwa ostatecznego archiwum wieloplikowego, dałaby coś takiego split.zipaa, split.zipab, split.zipac...
, a bez niej dane wyjściowe zostaną nazwane x
po aa
sufiksach fragmentów: xaa, xab, xac...
itd .; istnieje split
opcja -d
użycia sufiksów numerycznych zamiast alfabetycznych, ale daje to błąd (ponieważ najwyraźniej ekstraktor oczekuje standardowego wielosegmentowego archiwum ZIP, gdy zobaczy sufiks numeryczny - jak sugeruje prywatny czat Stephen Kitt ;
rm
zastosowane do my_archive.zip
pliku pozostawi nam tylko żądane archiwum wielosegmentowe.
Uwaga:
Aby wyodrębnić powstałe archiwum z wieloma plikami zip, potrzebne jest narzędzie obsługujące aa
archiwa segmentetd , tak jak file-roller
w systemie Linux i 7-Zip w systemie Windows.