Перейти к содержанию
HexaTransfer
Вернуться к блогу
Передача файлов

Инструменты передачи файлов Linux: CLI и браузерные варианты

Изучите лучшие инструменты передачи файлов в Linux. От утилит командной строки до браузерных сервисов для отправки файлов.

На Linux лучший инструмент передачи файлов зависит от того, куда идут данные: между собственными машинами (rsync, scp, sftp) или нетехническому получателю за пределами вашего контроля (браузерные сервисы вроде HexaTransfer). Для массовых копий между серверами rsync -avP --partial — главная рабочая лошадка. Для разовой доставки нетехническому получателю URL от браузерного сервиса намного удобнее, чем просить установить SSH-клиент. Рабочие среды Linux (GNOME, KDE) также поддерживают SMB, WebDAV и SFTP напрямую через файловый менеджер.

Классические CLI-инструменты

scp — защищённое копирование по SSH. Просто и понятно:

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

Без возобновления при сбое. Подходит для надёжных сетей, неудобен при нестабильном соединении. OpenSSH 9.0 (2022) переключил протокол по умолчанию с SCP-over-SSH на SFTP — поведение схоже, но крайние случаи различаются.

rsync — инкрементальная синхронизация с возобновлением:

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

Флаги: -a режим архива (сохраняет права, время, симлинки), -v подробный вывод, -P прогресс + --partial (сохраняет частичный файл при сбое). --bwlimit=50000 ограничивает пропускную способность до 50 МБ/с для общих каналов.

При идентичных корнях источника и назначения rsync при последующих запусках переносит только изменённые байты — огромная экономия времени при повторяющихся передачах.

sftp — интерактивная передача файлов по SSH. Используется как старый FTP-клиент:

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

rclone — как rsync, но для облачных провайдеров. Поддерживает S3, Google Drive, Dropbox, OneDrive, Backblaze B2 и десятки других. Отлично подходит для скриптовой загрузки в объектное хранилище:

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

Браузерные варианты для нетехнических получателей

Не у каждого получателя файлов есть SSH-ключи. Для отправки журналистам, клиентам или членам семьи URL сервиса передачи — это то, что работает:

| Сервис | Макс. бесплатно | Шифрование | Поддержка Linux | |---|---|---|---| | HexaTransfer | 10 ГБ | Сквозное AES-256-GCM | Да (любой браузер) | | WeTransfer | 2 ГБ | TLS | Да | | SwissTransfer | 50 ГБ | TLS | Да | | Proton Drive Share | 1 ГБ | Сквозное | Да | | Tresorit Send | 5 ГБ | Сквозное | Да |

Firefox и Chromium на Linux оба уверенно справляются с большими загрузками. Производительность загрузки обычно ограничена «железом» и каналом, а не браузером.

Инструменты рабочего стола для передачи внутри сети

GNOME Files (Nautilus): Подключиться к серверу > smb://, sftp://, ftp://, dav://. Монтирует удалённое хранилище как локальное. Подходит для нечастого просмотра.

KDE Dolphin: те же возможности, немного другой интерфейс. Поддерживает те же протоколы.

smbclient — командная строка SMB для скриптов:

smbclient //server/share -U user

sshfs — монтирование удалённой файловой системы по SSH:

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

Полезно, когда приложение ожидает локальный путь.

Настройка скорости передачи в Linux

Стандартное масштабирование TCP-окна Linux хорошо справляется с высокоскоростными передачами, но некоторые дистрибутивы поставляются с консервативными настройками. Для передач через высоколатентные каналы с большой полосой пропускания:

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"

Включите BBR-управление перегрузкой для лучшей пропускной способности на каналах с потерями:

sysctl -w net.ipv4.tcp_congestion_control=bbr

На обычных домашних сетях это не нужно, но при передаче данных между дата-центрами или через континенты разница между стандартным CUBIC и BBR может быть в 2–3 раза.

Архивирование: варианты tar

tar -czf archive.tar.gz folder/          # gzip, быстро, умеренное сжатие
tar -cjf archive.tar.bz2 folder/         # bzip2, медленнее, лучше сжатие
tar -cJf archive.tar.xz folder/          # xz, медленнее всего, лучшее сжатие
tar --use-compress-program=zstd -cf archive.tar.zst folder/   # zstd, быстро и хорошее сжатие

Для современного Linux zstd превосходит gzip и по скорости, и по степени сжатия. Для распространения получателям не Linux используйте .zip: zip -r archive.zip folder/.

Чтобы разбить большой архив на части:

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

Пересборка: cat archive.tar.gz.part_* | tar -xzf -.

Объектное хранилище как транспортный уровень

Для рабочих процессов, генерирующих множество файлов или очень большие файлы, облачный бакет в качестве транспортного уровня удобнее разовых сервисов:

AWS S3: aws s3 cp file s3://bucket/path, затем создайте presigned URL с помощью aws s3 presign s3://bucket/path --expires-in 3600. Получатель получает временную прямую ссылку для скачивания.

Cloudflare R2: совместимый с S3 API, без платы за исходящий трафик. Используйте тот же CLI aws с кастомным эндпоинтом.

Backblaze B2: b2 upload-file bucket file key, затем b2 get-download-url-with-auth bucket key 3600.

MinIO: самостоятельный хостинг S3-совместимого сервера с presigned URL на собственном домене.

Для разработчиков, отправляющих артефакты сборки, логи или дампы, эти варианты предпочтительнее универсальных сервисов передачи файлов.

Временные HTTP-серверы для локальной сети

Для быстрой передачи в локальной сети:

python3 -m http.server 8000

Раздаёт текущий каталог по адресу http://your-ip:8000/. Получатель открывает URL и скачивает. Удобно между ноутбуком и ВМ или телефоном в одной Wi-Fi-сети. Без шифрования — подходит для внутренней сети, не для внешней.

Для HTTPS с самоподписанным сертификатом:

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 делает это чисто с автоматическим HTTPS, если у вас есть настоящий домен.

P2P-инструменты

Magic Wormhole (wormhole):

wormhole send bigfile.tar.gz
# выводит код вроде 7-crossover-clockwork
# получатель запускает: wormhole receive 7-crossover-clockwork

Сквозное шифрование, работает через NAT через rendezvous-сервер. Отлично для разовых прямых передач.

croc (от schollz): аналог wormhole, один исполняемый файл, кросс-платформенный. Популярен в homelab-сообществе.

Оба инструмента — peer-to-peer, но маршрутизируются через rendezvous-серверы для обхода NAT. Шифрование сквозное, путь — не прямой.

Шифрование перед загрузкой

Для параноидальных рабочих процессов зашифруйте архив перед отправкой через любой сервис:

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

Создаёт bigfile.tar.gz.gpg. Получатель расшифровывает с помощью gpg --decrypt. Передайте пароль по отдельному каналу.

Или используйте age — современную альтернативу:

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

С сервисами со сквозным шифрованием, такими как HexaTransfer, эта двойная обёртка обычно не нужна, но для угрозных моделей государственного уровня «подтяжки и ремень» имеют смысл.

Попробуйте на hexatransfer.com — бесплатно, без регистрации, до 10 ГБ.

Безопасная отправка больших файлов со сквозным шифрованием

Передавайте файлы до 10 ГБ бесплатно со сквозным шифрованием. Регистрация не требуется. Ваши файлы шифруются в браузере перед загрузкой — никто другой не может их прочитать.

Отправить файл