Przejdź do treści
HexaTransfer
Wróć do bloga
Transfer plikow

Kompresja plików przed wysłaniem: zmniejsz rozmiar

Dowiedz się kiedy i jak kompresować pliki przed transferem. Porównaj ZIP, RAR i 7z i wiedz, kiedy kompresja pomaga, a kiedy szkodzi.

Kompresuj tekst, kod źródłowy, logi, CSV oraz nieskompresowane formaty obrazów takie jak .bmp lub .tiff przed wysłaniem — spodziewaj się redukcji rozmiaru 3–10x. Nie kompresuj plików .jpg, .png, .mp4, .mp3, .docx, .xlsx, .pdf ani .zip — są już skompresowane wewnętrznie, a druga kompresja daje co najwyżej 2–3% oszczędności przy zmarnowanym CPU. Do łączenia wielu małych plików w jeden upload użyj .zip w trybie „store" (bez kompresji). Dla maksymalnego stopnia kompresji na danych kompresowalnych, 7z z LZMA2 zwykle bije .zip o 30–40%. RAR jest zasadniczo równoważny 7z, ale wymaga, by odbiorca miał zainstalowany WinRAR lub 7-Zip — .zip jest obsługiwany wszędzie.

Kiedy kompresja faktycznie pomaga

Pliki tekstowe kompresują się dramatycznie. Serwerowy plik .log o rozmiarze 10 MB często kurczy się do 800 KB w .zip (12x), a do 550 KB w 7z (18x). Kompresja działa, bo logi zawierają bardzo powtarzalne wzorce — znaczniki czasu, adresy IP, kody stanu HTTP — które algorytmy kompresji wykorzystują skutecznie.

Podobnie kompresowalne kategorie:

  • Kod źródłowy: .js, .py, .java, .cs, .go — zazwyczaj kompresja 3–5x
  • Dane CSV: 4–10x w zależności od redundancji zawartości
  • JSON/XML: 5–8x ze względu na powtarzające się nazwy pól
  • Nieskompresowane obrazy: .bmp (5–10x), nieskompresowany .tiff (4–8x)
  • Bazy danych: zrzuty .sql, pliki SQLite z wolnymi stronami (2–4x)
  • Warstwy PSD flat: 2–3x, jeśli nie są już skompresowane RLE wewnętrznie

Tarball repozytorium Git projektu średniej wielkości często kompresuje się 4–5x, dlatego git archive domyślnie pakuje drzewo w .tar.gz.

Kiedy kompresja jest zbędna

Już skompresowane formaty nie zmniejszają się dalej. Dane przeszły już przez DEFLATE, H.264, kwantyzację DCT JPEG lub podobny schemat — entropia jest już bliska teoretycznego minimum.

Pliki, które nie korzystają z kompresji:

  • .jpg, .jpeg, .heic: już zastosowana kompresja stratna
  • .png: wbudowana kompresja DEFLATE
  • .mp4, .mov, .mkv: już zastosowana kompresja H.264 lub H.265
  • .mp3, .aac, .flac, .ogg: audio już skompresowane
  • .pdf: wewnętrzne strumienie obiektów zwykle skompresowane DEFLATE
  • .docx, .xlsx, .pptx: to w rzeczywistości archiwa ZIP z XML — ponowne zipowanie jest zbędne
  • .zip, .7z, .rar, .gz, .bz2, .xz: skompresowane archiwa; kolejny przebieg nic nie daje
  • .apk, .jar, .war: archiwa Java/Android oparte na ZIP

Kompresja tych plików marnuje procesor i czasami lekko powiększa plik z powodu narzutu metadanych archiwum.

ZIP vs 7z vs RAR

| Format | Typowy stopień | Szybkość | Kompatybilność odbiorcy | Szyfrowanie | |---|---|---|---|---| | .zip (DEFLATE) | Bazowy | Szybki | Uniwersalny (wbudowany w Windows, macOS, Linux) | ZIP 2.0 (słaby), AES-256 (nowoczesne narzędzia) | | .zip (DEFLATE64) | 5–10% lepiej | Szybki | Windows, 7-Zip, niektóre narzędzia macOS | Tak samo jak .zip | | 7z (LZMA2) | 30–40% lepiej niż .zip | Wolniejszy | Wymaga 7-Zip, Keka lub The Unarchiver | Wbudowany AES-256 | | .rar (RAR5) | ~25–35% lepiej niż .zip | Średni | Wymaga WinRAR lub 7-Zip; tworzenie nieodpłatne w 7-Zip | Wbudowany AES-256 | | .tar.gz | Podobnie do .zip | Szybki | Wbudowany w macOS, Linux; wymaga 7-Zip na Windows | Brak natywnego | | .tar.zst (Zstandard) | Między .zip a 7z | Bardzo szybki | Wymaga zstd (jeszcze nie powszechny) | Brak natywnego |

Dla przenośności .zip pozostaje najbezpieczniejszym wyborem. Dla stopnia kompresji wygrywa 7z. Dla szybkości i nowoczesnej wydajności Zstandard (.zst) jest znakomity, ale odbiorcy potrzebują narzędzi, które go obsługują.

Tryb „store" do łączenia plików

Jeśli wysyłasz 200 zdjęć .jpg w jednym transferze, nadal chcesz ich w jednym archiwum, by odbiorca kliknął „pobierz" raz. Użyj .zip z poziomem kompresji 0 (tryb „store"). Archiwum to suma rozmiarów plików plus kilka kilobajtów narzutu katalogu — a koszt CPU przy jego tworzeniu jest bliski zera.

W 7-Zip: Dodaj do archiwum → Poziom kompresji → Składowanie. W Finderze macOS: kliknij prawym → Kompresuj (domyślnie używa DEFLATE, co nie pomaga dla .jpg, ale specjalnie nie zaszkodzi). W linii komend: zip -0 bundle.zip *.jpg.

Szyfrowanie podczas kompresji

Pliki ZIP chronione hasłem z AES-256 (nie starym szyfrowaniem ZIP 2.0) są rozsądnym środkiem transportu wrażliwych danych, gdy nie możesz polegać na bezpieczeństwie kanału transferu. WinRAR, 7-Zip i Archive Utility w macOS obsługują szyfrowanie ZIP AES-256.

Haczyk: wymiana hasła. Nie wysyłaj hasła e-mailem w tej samej wiadomości co ZIP. Wyślij plik, a hasło udostępnij przez Signal, iMessage lub osobny kanał. Jeszcze lepiej: użyj usługi transferowej z wbudowaną ochroną hasłem, która obsługuje tę złożoność za Ciebie.

Stare szyfrowanie ZIP 2.0 (czasem nadal domyślne w starszych narzędziach) jest kryptograficznie złamane — odzyskiwalne w sekundy za pomocą ataków ze znanym tekstem jawnym. Zawsze sprawdź, czy używasz AES-256, gdy polegasz na szyfrowaniu archiwum dla bezpieczeństwa.

Kompromis: czas CPU a zaoszczędzone bajty

Kompresja to kompromis między czasem a rozmiarem. Maksymalna kompresja 7z na archiwum tekstowym 5 GB może zająć 30 minut na laptopie i zaoszczędzić 2 GB w porównaniu z .zip. Jeśli transfer jest ograniczony rozmiarem (usługa z limitem 2 GB), to jest to opłacalne. Jeśli transfer jest ograniczony czasem, a przepustowość tania, te same 5 GB wysyłają się w 90 sekund przez światłowód — pół godziny kompresji kosztowałoby więcej czasu niż zaoszczędziło.

Zasada praktyczna: kompresuj, gdy sieć jest wolna w stosunku do CPU; nie zawracaj sobie głowy, gdy sieć jest szybka w stosunku do CPU.

Dzielenie dużych archiwów

Gdy plik przekracza limit usługi transferowej, dzielenie na woluminy jest opcją. 7-Zip i WinRAR obsługują archiwa wieloczęściowe (.7z.001, .7z.002 lub .part1.rar, .part2.rar). Każdą część można przesłać jako osobny transfer; odbiorca pobiera wszystkie części i rozpakowuje.

To działa, ale jest kruche — brak jednej części uniemożliwia odtworzenie całego archiwum. Lepiej, gdy to możliwe: użyj usługi z większym limitem. Limit 50 GB SwissTransfer eliminuje potrzebę dzielenia w większości realistycznych przypadków.

Kompresja stratna jako alternatywa

Czasami celem nie jest kompresja archiwum, ale zmiana formatu pliku. Plik audio .wav 200 MB staje się plikiem .mp3 320 kbps o rozmiarze 15 MB — stratnie, ale niemal niedostrzegalnie przy zwykłym odsłuchu. Nieskompresowane zdjęcie .tiff 60 MB staje się 5 MB wysokiej jakości .jpg. Film 4K .mov przekodowany na H.265 przy rozsądnym bitrate może skurczyć się 3–5x.

Stosuj to rozważnie. Dla plików wzorcowych konwersja stratna niszczy informacje. Dla podglądów lub dostarczanych materiałów to właściwe narzędzie. Narzędzia: FFmpeg do wideo/audio, Handbrake do wideo, ImageMagick do obrazów, a także dialogi eksportu w Photoshopie, Final Cut Pro lub Premiere.

Co robi usługa transferowa po swojej stronie

Większość usług w pewnym stopniu kompresuje dane w locie — kompresja TLS jest wyłączona ze względów bezpieczeństwa, ale HTTP gzip lub brotli na warstwie API od czasu do czasu uruchamia się dla metadanych. Rzeczywisty ładunek pliku nie jest kompresowany po stronie serwera, bo większość ruchu to już skompresowane formaty.

HexaTransfer i podobne usługi zero-knowledge nie mogą kompresować ładunków po stronie serwera, ponieważ otrzymują szyfrogram. Kompresja musi odbyć się po stronie klienta przed szyfrowaniem — po zaszyfrowaniu szyfrogram wygląda losowo i jest niekompresowalny. Oznacza to, że kompresja po stronie klienta jest jedynym sposobem zmniejszenia rozmiaru przy korzystaniu z usługi E2EE.

Decyduj według zawartości, nie nawyku

Głównym błędem jest odruchowe „zawsze zipuj przed wysłaniem". Dla klienta odbierającego 20 dokumentów .pdf archiwum ZIP jest wygodne. Dla klienta odbierającego jeden plik .mp4 o rozmiarze 800 MB ZIP marnuje czas po obu stronach. Dopasuj wybór do zawartości.

W razie wątpliwości: wyślij plik bez kompresji. Odbiorca zawsze może zipować po otrzymaniu. Jeśli łączysz wiele plików, użyj .zip w trybie store. Jeśli zawartość jest głównie tekstowa, użyj 7z dla realnych oszczędności.

Werdykt

Kompresuj, gdy dane są kompresowalne — tekst, logi, kod źródłowy, bazy danych. Nie kompresuj, gdy dane są już skompresowane — zdjęcia, filmy, audio, PDF-y, dokumenty biurowe. Do łączenia plików używaj ZIP w trybie store. Dla maksymalnego stopnia kompresji tekstu używaj 7z z LZMA2. Szyfruj hasłami archiwów AES-256 wyłącznie jako uzupełnienie bezpiecznego kanału transferu, a nie jego zastępstwo.

Wypróbuj na hexatransfer.com — bezpłatnie, bez konta, do 10 GB.

Wysyłaj duże pliki bezpiecznie z szyfrowaniem end-to-end

Przesyłaj pliki do 10 GB za darmo z szyfrowaniem end-to-end. Bez rejestracji. Twoje pliki są szyfrowane w przeglądarce przed przesłaniem — nikt inny nie może ich odczytać.

Wyślij plik