Unixコマンドを使用して、私のサブディレクトリにあるcpファイルをSSH経由でリモートコンピュータに送信できますか?

Unixコマンドを使用して、私のサブディレクトリにあるcpファイルをSSH経由でリモートコンピュータに送信できますか?

一連のソフトウェアファイルを~/Downloads私のパーソナルコンピュータのサブディレクトリにダウンロードしました。またbashを使用してssh

sshこのファイルをリモートコンピュータに転送できますか?

答え1

この目的で使用したい場合がありますscp。 SSHプロトコルを使用してファイルを転送する安全な方法です。

たとえば、yourfile.txtfromというファイルを~/Downloadsリモートコンピュータにコピーするには、次のようにします。

scp ~/Downloads/yourfile.txt [email protected]:/some/remote/directory

より多くの例を見ることができますここ

答え2

これは明らかに正しいツールですが、scp何らかの理由で利用できない場合は、ローカルシステムで次の操作を実行してディレクトリ構造をリモートシステムにコピーできます。

tar -c . | ssh <remote> tar -x

tarこれはローカルシステムの現在のディレクトリになり、そのtarディレクトリを書き込み、リモートコマンドを実行して読み取るファイルを解凍できるコマンドstdoutにパイプします。sshstdin

-f -作成と抽出の両方のデフォルト設定に対するDietrich Eppのコメントを反映するように編集されているため、明示的に指定する必要はありません。

答え3

より多くの状況でこれを行うには、sshfsFUSE(Linux、* BSD、Mac OS X)をサポートするUnixシリーズを使用している場合は、リモートファイルシステムをインストールすることをお勧めします。 ~/remote-server などのホームディレクトリの下にディレクトリを作成します。

    $ mkdir ~/remote-server

その後、リモートファイルシステムマウントを使用してくださいsshfs。 「yourserver.com」をリモートコンピュータのホスト名に変更し、「リモートディレクトリ名」をリモートシステムで使用されているディレクトリに変更します。

    $ sudo sshfs [email protected]:/name/of/remote/directory ~/remote-server/

これが完了すると、リモートディレクトリはファイルシステムの一部になり、次のようなすべての一般的なツールを使用できますcp

    $ cp ~/Downloads/your-files ~/remote-server

まだインストールしていない場合は、sshfsパッケージマネージャを使用してコンピュータにインストールできます(sshfsまたは名前のパッケージを検索fuse-sshfs)。詳細については、次を参照してください。オンラインチュートリアル

ちなみに、これはリモートサーバーからファイルを管理するための私のお気に入りの方法です。私は通常この方法で1つの本番サーバーと2つの開発サーバーをセットアップし、一般的なファイルナビゲーションワークフローを使用します。

答え4

上記の回答に追加します。場合によっては、リモートパスがわからない場合があります。そのような場合は、sftpまず目的の場所に移動してから、getまたはputを使用して実際にファイルをダウンロードまたはアップロードします。

これは常に同期状態を維持したい場合や、リモートシステム上の一部のファイルをローカルで実行したい場合にsshfs便利です。

関連情報