Linuxシステム管理者として、ファイルを転送するにはさまざまな方法があります。 、安全かどうかにかかわらず、2つの異なるホスト間。
日中の仕事中に、大きな転送を実行するように求められる場合があります 2つの離れたサーバー間。
データベース全体をバックアップする必要がある場合があります 安全な共有ドライブで、または単にシステムにリモートファイルを取得したい場合があります。
結果として、ファイルを転送したい 、しかしあなたはそれを非常に安全で安全な方法でやりたいのです。
幸いなことに、それを実現するために使用できるさまざまなコマンドがあります。
このチュートリアルでは、Linux上のホスト間でファイルを転送するためのさまざまな方法をすべて見ていきます。 ftp、sftp、scpまたはrsyncのいずれかを使用します。
準備はいいですか?
Linuxでファイルを転送するすべての方法は次のとおりです:
ftpを使用したLinuxでのファイル転送
Linuxでファイルを転送する最初の方法は、 ftpを使用することです。 コマンド 。

デフォルトでは、FTPプロトコルは保護されていないTCPプロトコルを使用します 。
これは、誰かがネットワークを介して送信されたデータまたはパケットを追跡する場合、リモートホストに送信しているものを確認できることを意味します。
ほとんどの場合、特にインターネット経由で行われる場合、これはファイル転送に必要なものではありません。
ただし、ローカルネットワーク上で簡単にするために使用すると便利な場合があるため、ftpコマンドの構文を引き続き提供します。
デフォルトでは、ディストリビューションにftpコマンドがデフォルトでインストールされていない場合があります。
ホストにftpがインストールされているかどうかを確認するには、次のコマンドを実行できます
$ command -v ftp
出力が提供されていない場合は、システムでftpを使用できないことを意味します。
Debianベースのディストリビューションへのftpのインストール
Debianにインストールするには ベースのディストリビューションの場合は、次のコマンドを実行します
新しいパッケージをインストールするには、Debianディストリビューションに対するsudo権限が必要です
$ sudo apt-get install ftp
インストール後、「コマンド」コマンドを再度実行して、システムで正しく使用できることを確認します。
$ command -v ftp
/usr/bin/ftp
RedHatベースのディストリビューションへのftpのインストール
Red Hatベースのディストリビューションにftpをインストールするには、次のコマンドを実行する必要があります
RHELに新しいパッケージをインストールするには またはCentOS 、CentOSディストリビューションに対するsudo権限が必要です。
$ sudo yum install ftp
繰り返しますが、パッケージが正しくインストールされていることを確認するために「コマンド」コマンドを実行します
$ command -v ftp
/usr/bin/ftp
ftpでリモートホストに接続する
ftpコマンドを使用してリモートホストに接続するには、次の構文を使用する必要があります
$ ftp <destination_ip>
接続するとき、これは、保護されていないFTPサーバーに接続している場合に表示されるはずです。

このFTPサーバーに接続するために割り当てられたユーザー名を入力します。
パスワードの入力を求められます。クレデンシャルが正しければ、FTPサーバーに直接ログインできるはずです。

ftpを使用したLinuxでのファイルのダウンロード
FTPサーバーに接続している場合、FTPサーバーを操作する方法はたくさんあります。
まず、「?」を押します 」を使用して、使用可能なすべてのコマンドを確認します。

ご覧のとおり、使用可能なコマンドは、標準のLinuxシステムで使用できるコマンドとほとんど同じです。
デフォルトでは、FTPサーバーでは、ホームディレクトリへのFTPシェルアクセス権が付与されます。
現在のディレクトリで使用可能なすべてのファイルを表示するには、次のコマンドを実行します
$ ls

ここに表示されているように、ホームディレクトリのエントリを一覧表示しています。
フォルダの1つに移動するには、移動先のパスを指定して標準の「cd」コマンドを押します。

現在のディレクトリからファイルをダウンロードするには、次のコマンドを実行する必要があります
$ get <file>

ローカルは、ローカルマシンの現在の作業ディレクトリにコピーされます。これは、最初にftpコマンドを起動した場所からのパスを意味します。
ちなみに、リモートホストから複数のファイルをダウンロードする場合は、次の構文で「mget」コマンドを使用する必要があります
$ mget <file1> <file2> ... <filen>
おめでとう!
FTPを使用して、離れた場所にあるマシンからローカルマシンにファイルを正常に転送しました。
ftpを使用してLinuxにファイルをアップロードする
FTPを使用すると、離れたホストからファイルをダウンロードできますが、リモートホストにファイルをアップロードすることもできます。
ftpを使用してファイルをアップロードするには、次の構文で「put」コマンドを使用する必要があります
$ put <file>

これで、ファイルの転送に使用しているユーザーのホームディレクトリで、リモートホストからファイルにアクセスできるようになります。
$ ls /home/<user>
file.txt
同様に、リモートホストに複数のファイルをアップロードする場合は、この方法で「mput」を使用できます
$ mput <file1> <file2> ... <filen>
おめでとうございます!
ftpを使用して、ローカルホストからリモートホストにファイルを正常に転送しました。
Linuxでsftpを使用してファイルを転送する
2つのホスト間でファイルを転送するためのより安全な方法は、sftpコマンドを使用することです。

「セキュアファイル転送プロトコル」を表すsftpコマンド 「は、暗号化されたトラフィックを使用して2つのホスト間でファイルを転送する方法です。
その結果、誰かがあなたとリモートホストの間のトラフィックをキャッチしたとしても、SSHキーにアクセスできなければそれを復号化することはできません。
sftpコマンドを使用する場合、ファイルをダウンロードまたはアップロードしようとしているホストには、SSHサーバーが装備されている必要があります。
リモートホストでOpenSSHサーバーを使用している場合は、ファイル転送を実行するためにOpenSSHサーバーに接続できます。
デフォルトでは、 sftp システムで使用可能である必要がありますが、次のコマンドを実行して確認できます。
$ command -v sftp
/usr/bin/sftp
sftpを使用してリモートホストに接続する
sftpを使用してリモートホストに接続するには、次の構文を使用する必要があります
$ sftp <destination_ip>
デフォルトでは、リモートホストに初めて接続する場合は、システムの信頼できるホストのリスト(デフォルトでは/home/user/.ssh/known_hostsにあります)にホストを追加するように求められます。

リモートSSHサーバーに接続したので、ファイルをナビゲートまたは転送するための構文は、標準のftpコマンドと同じです。
sftpを使用したLinuxでのファイルのダウンロード
まず、「?」を押すことができますSSHサーバーで使用可能なすべてのコマンドを確認するため。

まず、「ls」コマンドを押して、リモートシステムで使用可能なすべてのファイルとフォルダを表示します。
$ ls

ご覧のとおり、このコマンドは、現在座っているフォルダ全体(この場合はホームディレクトリ)を一覧表示します。
フォルダに移動するには、標準のFTPサーバーで通常実行される「cd」コマンドを押します。
$ cd <path>

SFTPサーバーにファイルをダウンロードするには、この構文を使用して「get」コマンドを使用します
$ get <file>

ファイルは、現在のリモートディレクトリからsftpコマンドを起動したローカルディレクトリにコピーされます。
おめでとう!リモートホストからローカルマシンにファイルを正しく転送しました。
sftpを使用してLinuxにファイルをアップロードする
または、ローカルマシン間でリモートホストにファイルを転送することもできます。
sftpを使用してファイルを転送するには、「put」コマンドを使用する必要があります。
$ put <file>

リモートディレクトリのエントリを一覧表示すると、ファイルが表示されるはずです。
$ sftp> ls -l

おめでとうございます!
ローカルホストからリモートマシンにファイルを正常に転送しました。
scpを使用したLinuxでのファイル転送
Linuxで2つのホスト間でファイルを転送する他の方法の1つは、scpコマンドを使用することです。
$ scp <option> <source_user>@<source_host>:<file> <destination_user>@<destination_host>:<file>
scpコマンドは、2つのホスト間に安全な接続を確立し、ファイルを転送するために標準のSSHポートを使用します。
結果として、ファイルを転送するには、宛先ホスト上にSSHサーバーが存在する必要があります。
たとえば、現在のマシンからリモートホストにローカルファイルを転送するには、次のコマンドを実行します
$ scp file [email protected]:file
デフォルトでは、絶対パスを指定しない場合、ファイルは接続しているユーザーのホームディレクトリに直接コピーされます。

これで、リモートホスト上のファイルを確認すると、ファイルはユーザーのホームディレクトリにあるはずです。

scpを使用したLinuxでのディレクトリの転送
scpコマンドを使用すると、ディレクトリ全体を宛先ホストに転送することもできます。
ディレクトリをコピーするには、「-r」オプションを指定する必要があります。
3つのファイルが含まれる「ディレクトリ」という名前のフォルダの例を見てみましょう。それらをコピーするには、次のコマンドを使用する必要があります
$ scp -r directory [email protected]:.

宛先ホストのディレクトリを調べると、転送されたディレクトリを確認できるはずです。

ターゲットにカスタムディレクトリを指定した場合、デフォルトで存在しない場合は作成されることに注意してください。
2つのリモートホスト間でのファイル転送
前の例では、IPアドレスを使用して接続した離れたホストを持つローカルホストを使用しました。
ここで、2つの異なるIPアドレスにある2つのリモートホスト間でファイルを転送する必要がある場合があります。
これら2つのホスト間でファイルを転送するには、次のコマンドを実行します
$ scp <option> <source_user>@<source_host>:<file> <destination_user>@<destination_host>:<file>
たとえば、
につながります$ scp [email protected]:file [email protected]:file
この場合、両方のインスタンスに2つのSSHサーバーが必要になることに注意してください。そうしないと、機能しません。
プログレスバーでscpを使用する
scpプロセスの統計を表示するには、「-v」オプション(冗長を表す)を指定する必要があります
$ scp -v <source_user>@<source_host>:<file> <destination_user>@<destination_host>:<file>

rsyncを使用したLinuxでのファイル転送
最後に、Linux上の2つのホスト間でファイルを転送する最後の方法は、rsyncコマンドを使用することです。
rsyncコマンドは、データの転送にSSHプロトコルに依存しているため、安全なプロトコルも使用します。さまざまな方法で使用できますが、このチュートリアルではファイル転送に焦点を当てます。
scpコマンドとrsyncコマンドは非常に似ていますが、rsyncはファイル転送のためのより多くの機能を提供します。たとえば、特定のファイルを含め、他のファイルを除外するように選択できます。コピー中にアクセス許可またはハードリンクを保持することもできます。
全体として、rsyncはスーパーセット scpコマンドの。
デフォルトでは、rsyncコマンドはシステムにインストールされていない可能性があります。インストールするには、それらの手順に従ってください。
Debianベースのディストリビューションへのrsyncのインストール
rsyncをインストールするには、ホストでsudoユーザーになります。
rsyncをインストールするには、次のコマンドを実行します
$ sudo apt-get install rsync
最後に、コマンドを実行して、正しくインストールされていることを確認します。
$ rsync --help
RedHatベースのディストリビューションへのrsyncのインストール
RHELまたはCentOSにrsyncをインストールするには、次のコマンドを実行します
$ sudo yum install rsync
同様に、ヘルプオプションを実行して、正しくインストールされていることを確認します。
$ rsync --help
Linuxでファイルを転送するためのrsyncの使用
rsyncがホストに正しくインストールされたので、次のように使用できます
$ rsync <option> <source_user>@<source_host>:<file> <destination_user>@<destination_host>:<file>
たとえば、ローカルホストからリモートマシンにファイルを転送するには、次のコマンドを実行します
$ rsync file [email protected]:file

同様に、リモートホストからローカルマシンにファイルをコピーするには、次のコマンドを実行します
$ rsync [email protected]:file file

rsyncを使用してLinuxでディレクトリを転送する
rsyncを使用すると、ローカルホストからリモートホストに完全なディレクトリを転送することもできます。
現在の構文に「-r」オプションを追加するだけです
$ rsync -r <source_user>@<source_host>:<file> <destination_user>@<destination_host>:<file>
ディレクトリをコピーするときは、注意しなければならないルールがあります。
ソースディレクトリを指定する場合、ディレクトリ自体ではなくディレクトリのコンテンツをコピーするために、末尾にスラッシュを追加するオプションがあります。
これを説明するために、「directory」という名前のディレクトリがあり、リモートマシンの「directory」という名前のリモートディレクトリに転送するとします。
末尾の構文を使用すると、これがリモートホストで取得されるものです
$ rsync directory/ [email protected]:directory
リモートホスト上
/home/user/
├── directory
├── file1
├── file2
├── file3
ただし、末尾にスラッシュを付けずにrsyncを記述した場合、つまり
$ rsync directory [email protected]:directory
リモートホスト上
/home/user/
├── directory
├── directory
├── file1
├── file2
├── file3
結果として、ディレクトリ名の重複を避けるために、あるホストから別のホストにファイルをコピーするときに、デフォルトで末尾のスラッシュを含めることができます。
プログレスバーでのrsyncの使用
rsyncを使用する非常に便利な方法の1つは、長い転送のためにプログレスバーを関連付けることです。
rsyncを使用するときにプログレスバーを表示するには、「– progress」オプション(人間が読める形式)を使用する必要があります
$ rsync --progress <source_user>@<source_host>:<file> <destination_user>@<destination_host>:<file>

結論
このチュートリアルでは、ftpコマンド、sftp、scp、またはrsyncコマンドを使用してLinux上でファイルを簡単に転送する方法を学びました。
これらのコマンドの違いと、完全なディレクトリを転送するためにそれらを使用する方法を確認しました。