GNU/Linux >> Linux の 問題 >  >> Linux

SSH経由でリモートシステムとローカルシステム間でファイルを転送する4つの方法

遅かれ早かれ、SSH経由でリモートサーバーにファイルをアップロードするか、そこからファイルをコピーする必要がある状況に気付くでしょう。

SSH経由でファイルを転送する方法はいくつかあります。ここでは、次の方法について説明します。

  1. scp:非推奨になっているレガシーコマンド
  2. rsync:ファイル同期用の一般的なコマンド
  3. sshfs:SSH経由でリモートディレクトリをマウントする
  4. sftpクライアント:SFTP経由でファイルにアクセスするためのGUIツール

SSHを介したファイル転送を成功させるには、次のことを行う必要があります

  • 2台のマシン間でSSHアクセスできるようにする
  • リモートマシンのユーザー名とパスワードを知る
  • リモートマシンのIPアドレスまたはホスト名(同じサブネット上)

それはさておき、SSHを介してリモートシステム間でファイルをコピーする方法を見てみましょう。

方法1:scpコマンドを使用してSSH経由でファイルをコピーする

scpは非推奨になることを読みました。それでも、SSHを介してシステム間でファイルを転送するための私のお気に入りのツールです。なんで?その構文はcpコマンドに似ているためです。

scpコマンドの使用方法を見てみましょう。

リモートマシンからローカルマシンにファイルをコピーします

これがシナリオです。リモートLinuxシステムから現在ログインしているシステムにファイルをコピーしたい。

これは、リモートシステム上のユーザーのホームディレクトリからローカルにログインしているシステムの現在のディレクトリにファイルをコピーする一般的な構文です。

scp [email protected]_address:/home/username/filename .

cpコマンドとの類似点はわかりますか?ユーザー名とIPアドレスをコロン(:)で指定する必要があることを除いて、ほとんど同じです。

ここで、このコマンドの実際の例を示します。

上記の例では、ファイルremote.txtをコピーしました /home/abhishek/my_fileから リモートシステム上のディレクトリをローカルマシンの現在のディレクトリに移動します。

これにより、リモートシステム上のファイルの正確な場所を知っておく必要があるというヒントが得られます。タブ補完はリモートシステムでは機能しません。

ローカルマシンからリモートマシンにファイルをコピーします

ここではシナリオが少し変更されています。これでは、scpを使用してSSH経由でリモートシステムにローカルファイルを送信しています。

これは、ファイル名をリモートシステムのユーザー名のホームディレクトリにコピーする一般的な構文です。

scp filename [email protected]_address:/home/username

上記の例では、local.txtをコピーしました 現在のディレクトリからユーザーのホームディレクトリへのファイルabhishek リモートシステム上。

次に、リモートシステムにログインして、ファイルが実際にコピーされたことを示しました。

ディレクトリもコピーできます

cpコマンドと類似しているのでscpが好きだと言ったことを覚えていますか?

cpコマンドと同様に、scpを使用してSSH経由でディレクトリをコピーすることもできます。構文もcpコマンドに似ています。 -rを使用するだけです オプション。

scp -r source_dir [email protected]_address:/home/username/target_dir

あなたはそれでもっとたくさんのことができます。このチュートリアルでscpコマンドの例をさらに読んでください:

方法2:rsyncを使用してSSH経由でファイルとディレクトリをコピーする

scpは廃止されているため、rsyncはSSHを介してリモートシステム間でファイルをコピーするための次善のツールです。実際、多くの点でscpよりも優れています。

コマンド構文はscpと同じです。古いバージョンのrsyncはrsync -e sshを使用する必要がありました しかし、それはもうそうではありません。

リモートマシンからローカルマシンにファイルをコピーします

リモートシステム上のユーザーのホームディレクトリから、ローカルにログインしているシステムの現在のディレクトリにファイルをコピーするとします。

rsync [email protected]_address:/home/username/filename .

scpで見たのと同じ例を見てみましょう。ファイルremote.txtをコピーしています /home/abhishek/my_fileから リモートシステム上のディレクトリをローカルマシンの現在のディレクトリに移動します。

ローカルマシンからリモートマシンにファイルをコピーします

これは、ファイルをリモートシステムのusernameのホームディレクトリにコピーする一般的な構文です。

rsync filename [email protected]_address:/home/username

実際の例を見てみましょう。 local.txtをコピーしています 現在のディレクトリからユーザーのホームディレクトリへのファイルabhishek リモートシステム上。

rsyncを使用してディレクトリをコピーするのはどうですか?

それは同じだ。 -rを使用するだけです リモートシステム間でSSH経由でディレクトリ全体をコピーするrsyncのオプション。

rsync -r source_dir [email protected]_address:/home/username/target_dir

この例を見てください。 my_fileディレクトリ全体をリモートシステムからローカルシステムにコピーします。

rsyncは用途の広いツールです。これは本質的に、2つのディレクトリ間でコンテンツを「再帰的に同期」するためのツールであり、自動バックアップを作成するために非常に人気があります。

方法3:SSHFSを使用してSSH経由でリモートシステムからファイルにアクセスする

リモートファイルやディレクトリにアクセスするために使用できるSSHFS(SSHファイルシステム)もあります。ただし、これはファイルをコピーするだけではあまり便利ではありません。

この方法では、リモートディレクトリをローカルシステムにマウントします。マウントすると、マウントされたディレクトリとローカルシステムの間でファイルをコピーできます。

最初にディストリビューションのパッケージマネージャーを使用して、ローカルシステムにsshfsをインストールする必要がある場合があります。

DebianとUbuntuでは、次のコマンドを使用できます:

sudo apt install sshfs

システムにsshfsをインストールしたら、それを使用してリモートディレクトリをマウントできます。マウントポイント専用のディレクトリを作成することをお勧めします。

mkdir mount_dir

次に、次の方法で目的のディレクトリをリモートマシンにマウントします。

sshfs [email protected]_address:path_to_dir mount_dir

マウントされると、ローカルマシン自体にあるかのように、このディレクトリまたはこのディレクトリからファイルをコピーできます。

cp local_file mount_dir

このファイルをマウントしたことを忘れないでください。作業が完了したら、マウントを解除する必要もあります:

umount mount_dir

これは、my_fileをマウントした例です。 リモートシステムからremote_dirへのディレクトリ ローカルシステム上のディレクトリ。 remote.txtをコピーしました ファイルをローカルシステムに保存してから、ディレクトリをアンマウントします。

方法4:リモートシステム間でファイルを転送するためにGUIベースのSFTPクライアントを使用する

最後の手段として、FTPクライアントを使用してリモートシステムとローカルシステム間でファイルを転送できます。

FileZillaは、最も人気のあるクロスプラットフォームFTPクライアントの1つです。ローカルシステムに簡単にインストールできます。

インストールしたら、ファイル->サイトマネージャーに移動します IPアドレス、SSHポート番号、ユーザー名、パスワードなどのリモートシステムの詳細を追加します。

接続すると、左側にローカルファイルシステム、右側にリモートファイルシステムを表示する分割ウィンドウビューが表示されます。

ファイルを転送するには、ファイルを左から右または右から左にドラッグアンドドロップします。下部にプログレスバーが表示されます。

どちらの方法が好きですか?

大丈夫! SSH経由でファイルをコピーするために使用できるさまざまなコマンドラインとGUIメソッドを示しました。

ここで使用する方法を決定するのはあなた次第です。 SSH経由でファイルを転送するための好ましい方法をコメントしてください。


Linux
  1. SFTPプロトコルを使用してローカルマシンとリモートマシン間でファイルを転送する方法

  2. SCP Linuxコマンド–リモートからローカルへのSSHファイル転送方法

  3. SSH経由でファイルをダウンロードおよびアップロードする方法

  1. SFTPプロトコルを使用してローカルマシンとリモートマシン間でファイルを転送する

  2. Scpを使用してローカルディレクトリXからリモートディレクトリYにファイルを転送しますか?

  3. SCP と Rsync を使用して Linux でファイルを転送する方法

  1. SCPとFTPを使用してLinuxのサーバー間でファイルを転送する方法

  2. Linux で SCP コマンドを使用してファイルを安全に転送する方法

  3. SSH 経由でデバイスを使用しますか?