Linuxファイル転送ツール:CLIとブラウザベースの選択肢
Linux最良のファイル転送ツールを紹介。CLIユーティリティからブラウザサービスまでLinuxでのファイル送信に最適なツール。
Linux で最適なファイル転送ツールは、自分のマシン間で移動するのか( rsync 、 scp 、 sftp )、それとも制御外の誰かに送るのか( 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 Wormhole ( wormhole ):
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のファイルを無料で転送。アカウント不要。ファイルはアップロード前にブラウザで暗号化されるため、他の誰にも読まれません。
ファイルを送信