web-dev-qa-db-ja.com

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

ここで他の質問とインターネット上のさまざまな「scp使用法」のチュートリアルを見回しましたが、何が問題なのかを分類できません。

私はLinux Mintを使用していて、scpがどのように機能するかを理解しようとしています。

私はディレクトリ/ home/name/dir /にファイルfile.ext(私のコンピュータ上)を持っています

私はsshを使用してリモートマシンに接続します。

ssh -p 2222 username@domain

それは私にパスワードを尋ね、シェルは表示します:

username@domain ~ $

ここで、コマンドを発行すると(sshを実行する前に、ローカルディレクトリ/ home/name/dirにいた):

scp -r -P 2222 file.ext username@domain 

出力は次のとおりです。

cp: cannot stat ‘file.ext’: No such file or directory

File.extの代わりに完全なパスを書き込んだ場合も同じ結果

scp -r -P 2222 /home/name/dir/file.ext username@domain 

また、サーバー管理者は、次のように、ファイルを(ルートの代わりに)リモートホームディレクトリにアップロードすることを教えてくれました。

scp -r -P 2222 file.ext username@domain:~/

しかし、それを実行して「Enter」を押しても、シェルがさらに入力を待っているかのように、何も起こりません。

私の問題の要約:

  • cp:そのようなファイルまたはディレクトリはありません
  • シェルは〜/に「スタック」します

助言がありますか?

111
dragonmnl

リモートではなくローカルマシンからscpコマンドを実行する必要があります。 sshはまったく必要ありません。

dragonmnl@local $ scp -P 2222 file.ext username@domain:~/ 

また、-rは必要ありません。

 -r      Recursively copy entire directories.  

すでにリモートマシンにログインしていて、ローカルマシンからコピーする場合は、ローカルマシンがインターネット経由でアクセス可能であり、sshが設定されていることを確認する必要があります。私はこれがあなたが望んでいることだとは思いませんが、そうであれば、これをリモートから実行してください:

username@domain $ scp dragonmnl@local:/path/to/file.ext ~/
127
terdon

リモートマシンとローカルマシンの間でファイルをアップロード/ダウンロードする2つの方法を提供します(私はMac airを使用しています)。

この場合、ローカルとリモートの間で「11.jpeg」をアップ/ダウンしたい:

1。

サービス上のファイルをローカルdirにコピー:このコマンドを実行するには、sshにいるときではなく、ローカルのbashターミナルにいる必要があります!

scp username@domain:/home/xxx/xxx/11.jpeg /Users/username/Desktop/  

ローカルディレクトリのファイルをリモートサービスにコピーします。また、ローカルのbashターミナルにいる必要があります

scp /Users/username/Desktop/11.jpeg username@domain:/home/xxx/xxx
  1. 同じ目的を達成するには、SSHにログインしている場合を設定する必要があります。まず、「システム環境設定」>「共有」>「リモートログイン」>「すべてのユーザー」を設定する必要があります(「すべてのユーザー」を設定する必要があるかどうかわかりません) 、ただし、この状況で機能します)」Macは「このコンピューターにリモートでログインするには、次のように入力します:ssh username @ xxxxxx、次に以下のコマンドを入力します:

    scp username @ domain:/home/xxx/xxx/11.jpeg username @ xxxxxx:/ Users/username/Desktop /

上記のこのコマンドは、sshにログインしているときにリモートからローカルにファイルをダウンロードするためのものです。ファイルをアップロードする場合は、2つのパスを変更してください。

33
maizer

このscpコマンドをリモートマシンで実行している場合は、file.extを「ローカル」ファイル、つまりリモートマシンでとして探しています。

リモートマシンからローカルマシンにファイルをコピーするには、scp -P 2222 username@domain:dir/file.ext localdirを使用します(例のように、file.extがリモートコンピューターの~/dirにあると想定しています)。リモートマシンでscpを実行する場合は、「ローカル」と「リモート」を逆にします。

5
alexis

scpコマンドを使用する

フォルダを転送する場合は、最初にZipを使用します。後でunzipすることもできます。

コンピューターから、これを実行します。

$ scp your_path_to_the_file/the_file [email protected]:~/

ここで、rootはアカウント、10.145.198.100はリモートサーバーのIPアドレスです。 the_fileをリモートの~/フォルダにコピーします。

ファイルを解凍:

$ unzip the_Zip_file.Zip -d destination_folder
4
Catbuilts

ほんの少しの貢献です。多分それは私のような初心者に役立つかもしれません:リモートディレクトリへのパスは次のように書かれるべきです:username@domain:~/remote_directory

ここで強調したいのは、常に:~/

1

Linux clientからLinux Serverにファイルをコピーするためのソリューション

  1. 次のコマンドを使用して、sshdがサーバーで実行されているかどうかを確認します:ps aux | grep sshd

  2. そうでない場合は、Sudo apt-get install openssh-server openssh-clientを使用してOpenSSHをインストールします https://www.tecmint.com/install-openssh-server-in-linux/

  3. サーバーを再起動し、ps aux | grep sshdを使用してsshdが実行されていることを確認します

  4. 必要な場合は/etc/ssh/sshd_configファイルを構成できますが、単純な構成では必要ありません

  5. netcatnc -v -z 127.0.0.1 22を使用してポートが開いていることを確認します

  6. LinuxクライアントからLinuxクライアントにファイルをコピーするには、次のようにscpを使用しますscp ~/filename.md [email protected]:~/folder/filename.md

  7. ファイルがコピーされたことを確認するには、ssh [email protected]を使用してパスワードを入力します。

Linux clientから `Windowsにファイルをコピーするソリューション

  1. MSからのOpenSSH など、WindowsでSSHサーバーを実行するための複数のクライアントがあります。

    MobaSSH

    Bitvise SSHサーバー

  2. 上記のサーバーのいずれかをインストールし、ポート22が開いていることを確認します。

    netsh advfirewall firewall add rule name = "SSH Port 22" dir = in action = allow protocol = UDP localport = 22

    netsh advfirewall firewall add rule name = "SSH Port 22" dir = out action = allow protocol = UDP localport = 22

    netsh advfirewall firewall add rule name = "SSH Port 22" dir = in action = allow protocol = TCP localport = 22

    netsh advfirewall firewall add rule name = "SSH Port 22" dir = out action = allow protocol = TCP localport = 22

    netsh advfirewallがallprofilesの状態をオフに設定しました

  3. これらのサーバーの比較:

    Bitvise SSHサーバー

    1. ネイティブcmdプロンプト、powershellプロンプト、オートコンプリートにほぼ近い

    2. 高度な使用法が必要な場合は、カスタマイズのための追加機能を提供します

    3. 単純なニーズに対するユーザーのカスタマイズは0です。MobaSSHOpenSSHを機能させるために多くの時間を費やした後、2分以内に使い始めました。

    4. Scpを使用してファイルをコピーするには、以下を使用します:scp ~/filename.md [email protected]:/C/Users/username/filename.md

    5. 個人使用は無料、プロ使用は99ドル。非常に多くの機能と優れた統合により、価格はお金の価値があります

    MobaSSH:

    1. lscpfindなどの単純なLinuxコマンドがMINGW64と同様に機能するWindows上のLinuxシェルを提供します

    2. cmdまたはpowershellと入力すると、cmdおよびpowershellに直接アクセスできます。

    3. Unicodeサポートは貧弱です。エンコードが正しくありません。たとえば、Pythonインタープリターを起動しようとすると、クラッシュします。 ( https://stackoverflow.com/a/12834315/475288 ):chcp 65001set PYTHONIOENCONDING=utf-8を使用して手動でエンコードを変更し、次に起動Pythonプロンプト

    4. MobaSSHの素晴らしいところは、非常にシンプルなユーザーインターフェースがあり、scpsshがあり、うまく統合されていることです。簡単な使用例でも機能します

    5. LinuxクライアントからWindowsを実行しているMobaSSHサーバーにファイルをコピーするには:scp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.mdを使用します。これは、MobaSSHcygwinおよびそのドライブは、cygwin- sドライブがマップされるのと同じ方法でマップされます。

    OpenSSHv6.7が https://developer.Microsoft.com/en-us/Microsoft-Edge/tools/vms/ からインストールされたMicrosoftのVMを使用し、OpenSSHv6.7がすでにインストールされている。

    1. 非常にバグが多く、大幅にカスタマイズする必要があります。

    2. コマンド補完が機能しない

    3. 端末上でカーソルを移動すると、空白が残ります

    4. Pythonが機能しない

    5. OpenSSHの以降のバージョンでは、改善されている可能性があります。さらに、MSはOptional Featureshttps://developer.Microsoft.com/en-us/Microsoft-Edge/tools/vms/ を介してOpenSSHを利用可能にするようです

0
alpha_989