コンテンツへスキップ
HexaTransfer
ブログへ戻る
ファイル転送

Linuxファイル転送ツール:CLIとブラウザベースの選択肢

Linux最良のファイル転送ツールを紹介。CLIユーティリティからブラウザサービスまでLinuxでのファイル送信に最適なツール。

Linux で最適なファイル転送ツールは、自分のマシン間で移動するのか( rsyncscpsftp )、それとも制御外の誰かに送るのか( HexaTransfer のようなブラウザベースのサービス)によって決まります。サーバー間の大容量コピーには rsync -avP --partial が定番です。技術者ではない受信者へのアドホックな配信には、 SSH クライアントのインストールを求めるよりブラウザベースサービスの URL のほうが有効です。 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 MB/s に制限できます。

ソースと宛先のルートが同一なら、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 GB | エンドツーエンド AES-256-GCM | はい(どのブラウザでも) | | WeTransfer | 2 GB | TLS | はい | | SwissTransfer | 50 GB | TLS | はい | | Proton Drive 共有 | 1 GB | エンドツーエンド | はい | | Tresorit Send | 5 GB | エンドツーエンド | はい |

Linux の Firefox と Chromium は両方とも大きなアップロードを十分に処理します。アップロード性能は通常、ブラウザではなくハードウェアと上り回線速度に依存します。

デスクトップからの同一ネットワークツール

GNOME Files( Nautilus ): 「サーバーへ接続」→ smb://sftp://ftp://dav:// 。リモートをローカルのようにマウントします。時折の閲覧に適しています。

KDE Dolphin : 同じ機能でやや異なる UI です。同じプロトコルをサポートしています。

smbclient —— スクリプト用のコマンドライン SMB です。

smbclient //server/share -U user

sshfs —— SSH 経由でリモートファイルシステムをマウントします。

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

アプリがローカルパスを期待するときに便利です。

Linux の転送速度チューニング

Linux のデフォルト TCP ウィンドウスケーリングは高帯域幅転送をうまく処理しますが、一部のディストロは保守的な設定を採用しています。長距離リンク(高レイテンシー、高帯域幅)での転送には次の設定が有効です。

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 で転送し、次に aws s3 presign s3://bucket/path --expires-in 3600 で署名付き URL を生成します。受信者は時間制限付きの直接ダウンロードを受け取ります。

Cloudflare R2 : S3 互換 API でエグレス料金なし。カスタムエンドポイントで同じ aws CLI を使います。

Backblaze B2 : b2 upload-file bucket file key でアップロードし、b2 get-download-url-with-auth bucket key 3600 でリンクを発行します。

MinIO : S3 互換サーバーをセルフホストし、自分のドメインから署名付き URL を発行します。

ビルド成果物、ログ、ダンプを送る開発者には、これらは汎用転送サービスより適しています。

アドホック HTTP サーバー

同一 LAN での素早い転送には次の方法が使えます。

python3 -m http.server 8000

現在のディレクトリを http://your-ip:8000/ で提供します。受信者は URL にアクセスしてダウンロードします。ノートPC と同じ Wi-Fi 上の VM やスマートフォン間で便利です。暗号化されないため、社内用途には問題ありませんが社外には使わないでください。

P2P ツール

Magic Wormholewormhole ):

wormhole send bigfile.tar.gz
# 7-crossover-clockwork のようなコードを出力
# 受信者は wormhole receive 7-crossover-clockwork を実行

エンドツーエンド暗号化で、ランデブーサーバー経由で NAT を越えて動作します。単発の直接転送に最適です。

croc ( schollz 製):wormhole に類似した単一バイナリのクロスプラットフォームツールです。ホームラボコミュニティで人気です。

これらは P2P ですが、 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でお試しください — 無料、登録不要、最大10GB。

エンドツーエンド暗号化で大容量ファイルを安全に送信

エンドツーエンド暗号化で最大10GBのファイルを無料で転送。アカウント不要。ファイルはアップロード前にブラウザで暗号化されるため、他の誰にも読まれません。

ファイルを送信