SCP と SFTP: ファイル転送にはどちらを使用すべきか

SCP と SFTP: ファイル転送にはどちらを使用すべきか

SCP (Secure Copy) および SFTP (Secure File Transfer Program) は、FTP (File Transfer Protocol) の代替手段であり、スケジュールされていないファイル転送に便利です。これら 3 つはすべて、ネットワーク メディアを介してある場所から別の場所にファイルを移動するのに役立ちます。ただし、FTP はデータをプレーン テキストで送信しますが、他の 2 つは通信に SSH ファイル転送プロトコル (SFTP) を使用します。

SCPとは何ですか?

SCP は、4.2 BSD で初めて登場した非対話型ファイル転送プログラムです。これまで、2 台のコンピュータ間でファイルを送信するために rlogin と SSH が使用されていました。これにより、リモート ホスト上でコマンドを実行してデータ転送を開始するため、リモート悪用されやすくなりました。

SCP でのファイルおよびディレクトリの転送は、ローカル マシンとリモート ホスト間、または 2 つのリモート ホスト間で行うことができます。これにより、さまざまな UNIX 系ディストリビューションを使用する場合に、より柔軟に作業できるようになります。

SCP を使用したローカル マシンとリモート サーバー間のファイル転送を示すターミナル。

SCP をワイルドカード文字とともに使用して、部分文字列基準に基づいて複数のファイルを転送することもできます。直接転送と同様に、これらのワイルドカードはファイルやディレクトリの送受信にも使用できます。

SFTPとは何ですか?

SCP とは異なり、SFTP は FTP プロンプトやリモート シェルと同様に動作するファイル転送プログラムです。リモート マシンのファイル システムに移動してその内容を操作できる対話型プロンプトを提供します。

SFTP は、圧縮や公開キー認証などのいくつかの SSH 機能も使用して、ホストに接続し、対話モードに入ります。これにより、これはヘッドレス UNIX マシン用の堅牢なリモート ファイル システム ブラウザになります。

リモート サーバーからローカル マシンにファイルを転送する SFTP プロンプトを表示する端末。

非対話型の認証方法を使用する場合、SFTP を使用してファイルを自動的に取得することもできます。それ以外の場合は、対話型認証が成功した後にそれらを取得します。

SCP と SFTP: どちらが優れていますか?

2 つのファイル転送プログラムにはいくつかの類似点があります。どちらも TCP ポート 22 を使用し、SSH で実行されるため、セキュリティの点では同等です。さらに、どちらのプログラムもファイル サイズの制限がないため、大きなファイルの転送もサポートしています。したがって、SCP と SFTP の主な違いは、仕様と機能にあります。

機能性

SCP の核となる基本的な目的は、2 台のマシン間でデータを安全にコピーすることです。これは、ファイル転送ごとにソースと宛先を指定する必要があるプログラムの基本構文からも明らかです。これにより、単純な 1 回限りのファイル転送の操作が容易になります。

一方、SFTP は、複数ファイルのダウンロードとともにファイル ブラウザを提供する、より完全なファイル転送クライアントです。これらの機能により、SFTP はリモート ホストとの間でファイルを常に転送する必要があるユーザーにとって理想的なものになります。

勝者:SFTP

スピード

SCP と SFTP は両方とも SFTP プロトコルを使用してファイルを暗号化し、転送するため、2 つのプログラムはデータの送受信時に同じ生の転送速度を共有します。ただし、転送を開始する場合は別の話になります。

多くの場合、SCP は接続の生の最大転送速度を達成するのが速いのに対し、SFTP は速度を「スプールアップ」しようとするため遅れます。さらに、SFTP 転送を開始するには、プロンプトに移動し、FTP コマンドを使用してファイルをアップロードおよびダウンロードする必要があります。

勝者:SCP

安全

SCP と SFTP はどちらも、ベース トランスポート層として SSH プロトコルに依存しています。これにより、軍用レベルの暗号化を使用してネットワーク経由でデータを安全に転送できるようになります。

それにもかかわらず、SFTP は、転送されたデータをすぐにディスクに書き込むことができる -f フラグを提供することで SCP を回避します。それだけでなく、そのコマンド ライン インターフェイスには、ファイルのアクセス許可ビットを更新できる多数のユーティリティも提供されています。

勝者:SFTP

ファイルサイズ

Linux の SCP と SFTP のほとんどの最新バージョンは 64 ビット バイナリです。これは、基盤となるファイル システムもサポートしている限り、両方のユーティリティが仮想的に最大 16 エクサバイトの任意のデータをサポートできることを意味します。

とはいえ、SCP は、特に古い UNIX 系マシンで作業する場合、大きなファイルに関していくつかの問題を引き起こす可能性があります。これは主に、一度に最大 4 ギガバイト相当のファイルしか処理できない 32 ビット バージョンの SCP を実行しているシステムが原因です。

勝者:SFTP

コマンドライン

SCP は非対話型でコマンド スクリプトを読み取ることができないため、すべてをコマンド ラインで記述する必要があります。ただし、これにより、より大きなシェル スクリプトの一部として実行することもできるため、システム管理タスクを自動化するときに役立ちます。

一方、SFTP は対話型であるため、ファイルからコマンドを読み取ることができます。これも自動化には便利ですが、通常のシェル スクリプトとは異なる一連のコマンドが必要になるため、扱いにくい場合があります。

勝者:SCP

ファイル転送の再開

SCP はこの機能を完全にはサポートしていません。このため、プログラムは不安定で断続的な接続で転送全体を繰り返す傾向があります。一方、SFTP は、フラグを使用した CLI プロンプトと、およびサブコマンド-aを使用したコマンド ライン クライアントの両方でこれをサポートします。regetreput

勝者:SFTP

ファイル転送には SCP と SFTP のどちらを使用するべきですか?

これらには類似点と相違点がありますが、一方が他方よりも優れていると言うのは公平ではありません。どちらもファイルを転送し、SSH で実行されるため同様のセキュリティ機能を備えています。最終的に、選択するユーティリティは、環境の要件に最適なものに基づいて選択されます。

SCP の使用目的

  • 2 つのリモート ホスト間で 1 つのファイルまたはディレクトリを転送する場合。
  • ネットワーク上のデータ転送を自動化したい場合。
  • SFTP サポートのない従来の UNIX のようなシステムを使用している場合。

SFTP を使用する目的

  • 単一のリモート ホストから複数のディレクトリ間で複数のファイルを転送する場合。
  • 新しい SSH セッションを開かずにリモート ホストのファイル システムと対話したい場合。
  • 断続的なネットワーク状態でも動作できる、信頼性の高いファイル転送プログラムが必要な場合。

それを念頭に置くと、2 つのシステム間でデータを送信することは、コンピューターがネットワーク上でどのように通信するかを理解するための最初のステップにすぎません。dig を使用した実践的な DNS 解決ガイドを参照して、 Linux マシンがデータの送信先をどのように認識するかを学びましょう。

画像クレジット: Alejandro Escamilla via Unsplash。すべての変更とスクリーンショットは Ramces Red によるものです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です