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

Narzędzia transferu plików Linux: opcje CLI i przeglądarkowe

Poznaj najlepsze narzędzia transferu plików na Linuxie. Od narzędzi wiersza poleceń po usługi przeglądarkowe do wysyłania plików.

Najlepsze narzędzie transferu plików na Linuxie zależy od tego, czy przenosisz pliki między własnymi maszynami (rsync, scp, sftp) czy wysyłasz do kogoś nieznanego (usługi przeglądarkowe jak HexaTransfer). Do serwerowych kopii masowych rsync -avP --partial jest podstawowym narzędziem. Do doraźnej dostawy dla odbiorcy bez wiedzy technicznej URL z usługi przeglądarkowej bije prośbę o instalację klienta SSH. Środowiska graficzne Linuxa (GNOME, KDE) obsługują natywnie SMB, WebDAV i SFTP przez menedżer plików.

Klasyki CLI

scp — bezpieczne kopiowanie przez SSH. Bardzo proste:

scp bigfile.tar.gz user@server:/home/user/
scp -r folder/ user@server:/path/

Brak wznawiania po błędzie. Dobre na niezawodnych sieciach, uciążliwe na niestabilnych. OpenSSH 9.0 (2022) zmienił domyślny protokół z SCP-przez-SSH na SFTP — zachowanie jest podobne, ale skrajne przypadki się różnią.

rsync — przyrostowa synchronizacja z wznawianiem:

rsync -avP --partial source/ user@server:/dest/

Flagi: -a tryb archiwum (zachowuje uprawnienia, czasy, linki symboliczne), -v szczegółowo, -P postęp + --partial (zachowuje częściowy plik po błędzie). --bwlimit=50000 ogranicza przepustowość do 50 MB/s na współdzielonym łączu.

Dla identycznych źródeł i celów rsync przenosi tylko zmienione bajty przy kolejnych uruchomieniach — ogromna oszczędność czasu przy powtarzalnych transferach.

sftp — interaktywny transfer plików przez SSH. Używaj jak starego klienta FTP:

sftp user@server
> put bigfile.tar.gz
> get somefile.txt

rclone — jak rsync, ale dla dostawców chmury. Obsługuje S3, Google Drive, Dropbox, OneDrive, Backblaze B2 i dziesiątki innych. Świetny do skryptowych przesyłań do object storage:

rclone copy local/folder remote:bucket/path -P

Opcje przeglądarkowe dla odbiorców bez wiedzy technicznej

Nie każdy odbiorca pliku ma klucze SSH. Dla dziennikarzy, klientów czy rodziny URL z usługi transferu po prostu działa:

| Usługa | Maks. darmowy | Szyfrowanie | Przyjazność dla Linuxa | |---|---|---|---| | HexaTransfer | 10 GB | End-to-end AES-256-GCM | Tak (dowolna przeglądarka) | | WeTransfer | 2 GB | TLS | Tak | | SwissTransfer | 50 GB | TLS | Tak | | Proton Drive Share | 1 GB | End-to-end | Tak | | Tresorit Send | 5 GB | End-to-end | Tak |

Firefox i Chromium na Linuxie sprawnie obsługują duże przesyłania. Wydajność zazwyczaj zależy od sprzętu i łącza, nie od przeglądarki.

Narzędzia sieciowe w środowiskach graficznych

GNOME Files (Nautilus): Połącz z serwerem > smb://, sftp://, ftp://, dav://. Montuje zdalny zasób jak lokalny. Dobre do okazjonalnego przeglądania.

KDE Dolphin: te same możliwości, nieco inny interfejs. Obsługuje te same protokoły.

smbclient — wiersz poleceń SMB dla skryptów:

smbclient //server/share -U user

sshfs — montowanie zdalnego systemu plików przez SSH:

sshfs user@server:/remote/path ~/mnt/remote

Przydatne, gdy aplikacja oczekuje ścieżki lokalnej.

Strojenie wydajności transferu na Linuxie

Domyślne skalowanie okna TCP Linuxa dobrze obsługuje transfery wysokiej przepustowości, ale niektóre dystrybucje mają konserwatywne ustawienia. Dla transferów przez łącza o dużych odległościach (duże opóźnienie, duża przepustowość):

sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"

Włącz kontrolę przeciążenia BBR dla lepszej przepustowości na łączach stratnych:

sysctl -w net.ipv4.tcp_congestion_control=bbr

Na zwykłych sieciach domowych jest to zbędne — ale przy przenoszeniu danych między centrami danych lub przez kontynenty różnica między domyślnym CUBIC a BBR może wynosić 2–3×.

Archiwizacja: warianty tar

tar -czf archive.tar.gz folder/          # gzip, szybki, umiarkowana kompresja
tar -cjf archive.tar.bz2 folder/         # bzip2, wolniejszy, lepsza kompresja
tar -cJf archive.tar.xz folder/          # xz, najwolniejszy, najlepsza kompresja
tar --use-compress-program=zstd -cf archive.tar.zst folder/   # zstd, szybki i dobry stosunek

Na nowoczesnym Linuxie zstd bije gzip zarówno szybkością, jak i stopniem kompresji. Do dystrybucji odbiorcom spoza Linuxa zostań przy .zip — użyj zip -r archive.zip folder/.

Podział ogromnego archiwum na części:

tar -czf - folder/ | split -b 2G - archive.tar.gz.part_

Składanie z powrotem: cat archive.tar.gz.part_* | tar -xzf -.

Object storage jako medium transferu

Dla obciążeń generujących wiele lub bardzo duże pliki traktowanie zasobnika chmury jako warstwy transferu jest wygodniejsze niż jednorazowa usługa:

AWS S3: aws s3 cp file s3://bucket/path, a następnie wygeneruj wstępnie podpisany URL przez aws s3 presign s3://bucket/path --expires-in 3600. Odbiorca otrzymuje ograniczone czasowo bezpośrednie pobieranie.

Cloudflare R2: API kompatybilne z S3, bez opłat za ruch wychodzący. Użyj tego samego CLI aws z niestandardowym endpointem.

Backblaze B2: b2 upload-file bucket file key, a następnie b2 get-download-url-with-auth bucket key 3600.

MinIO: samodzielny serwer kompatybilny z S3, wydawaj wstępnie podpisane URL-e z własnej domeny.

Dla deweloperów wysyłających artefakty buildu, logi lub zrzuty bazy danych to lepsze rozwiązanie niż ogólna usługa transferu.

Doraźne serwery HTTP

Do szybkich transferów w tej samej sieci LAN:

python3 -m http.server 8000

Serwuje bieżący katalog pod adresem http://twoje-ip:8000/. Odbiorca otwiera URL i pobiera. Przydatne między laptopem a VM lub telefonem na tym samym Wi-Fi. Nieszyfrowane — dobre do użytku wewnętrznego, nie zewnętrznego.

Dla HTTPS z certyfikatem self-signed:

python3 -c "import http.server, ssl; httpd = http.server.HTTPServer(('0.0.0.0', 8443), http.server.SimpleHTTPRequestHandler); httpd.socket = ssl.wrap_socket(httpd.socket, certfile='cert.pem', server_side=True); httpd.serve_forever()"

caddy file-server robi to elegancko z automatycznym HTTPS, jeśli masz prawdziwą domenę.

Narzędzia P2P

Magic Wormhole (wormhole):

wormhole send bigfile.tar.gz
# drukuje kod np. 7-crossover-clockwork
# odbiorca uruchamia: wormhole receive 7-crossover-clockwork

Szyfrowanie end-to-end, działa przez NAT przez serwer rendezvous. Świetne do jednorazowych transferów bezpośrednich.

croc (od schollz): podobne do wormhole, jeden binarny plik, wieloplatformowy. Popularny w społeczności homelab.

Oba są peer-to-peer, ale wciąż trasują przez serwery rendezvous dla przejścia przez NAT — szyfrowanie jest E2E, ścieżka nie jest bezpośrednia.

Szyfrowanie w spoczynku przed przesłaniem

Dla szczególnie ostrożnych przepływów pracy zaszyfruj archiwum przed wysłaniem przez jakąkolwiek usługę:

gpg --symmetric --cipher-algo AES256 bigfile.tar.gz

Tworzy bigfile.tar.gz.gpg. Odbiorca deszyfruje przez gpg --decrypt. Przekaż hasło innym kanałem.

Albo użyj age, nowoczesnej alternatywy:

age -p -o encrypted.age plaintext.tar.gz

Przy usługach z szyfrowaniem E2E jak HexaTransfer to podwójne zabezpieczenie jest zazwyczaj zbędne — ale dla modeli zagrożeń na poziomie państwowym ma sens.

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