質問: ### 前提 Linux環境初心者です、初質問失礼します。 自身のPCからサーバーへのアップロードおよびサーバーからPCへのダウンロードをscpコマンドを使用して行おうと考えています。 ファイル自体はcatコマンドおよびタブ入力を使用して内容を確認可能なテキストファイルです。 コマンドの自動化のためにも、なるだけWinSCP等使わず実行できたら、と思っております。 前任者は問題なくできていたようですが、連絡をとりながらいろいろ試してみたものの、解決できませんでした。 ### 該当のソースコード、エラーメッセージ 1 $ scp /cygdrive/c/Users/g***/Documents/o***/n***/p***/***.txt y***@***.net:/home/y***/p***/ y***@***.net's password: /cygdrive/c/Users/g***/Documents/o***/n***/p***/p***.txt: No such file or directory 2 $ scp y***@***.net:/home/y***/p***/test.text /cygdrive/c/Users/g***/Documents/o***/n***/p***/ yuuki.mori@file1.1018337.kuins.net's password: /cygdrive/c/Users/g***/Documents/o***/n***/p***/: No such file or directory なお、ファイル名やディレクトリ名はタブ入力もしくはタブ入力で開けたことを確認した際のソースのコピペを使用しています。 また、2のエラーメッセージ後は新たなコマンドの入力ができない状態でカーソルの点滅は継続したままフリーズ(?)してしまいます。 ### 試したこと #### パーミッション設定の変更 パーミッションの問題なのかと考え、chmodコマンドを使用してみましたが、結果は同じでした。 $ ls -l /cygdrive/c/Users/g***/Documents/o***/n***/p***/p***.txt -rwx------+ 1 g*** g*** 1772741 5月 6 09:27 /cygdrive/c/Users/g***/Documents/o***/n***/p***/p***.txt $ chmod 777 /cygdrive/c/Users/g***/Documents/o***/n***/p***/p***.txt $ ls -l /cygdrive/c/Users/g***/Documents/o***/n***/p***/p***.txt -rwxrwxrwx+ 1 g*** g*** 1772741 5月 6 09:27 /cygdrive/c/Users/g***/Documents/o***/n***/p***/p***.txt $ scp /cygdrive/c/Users/g***/Documents/o***/n***/p***/p***.txt y*@***.net:/home/y***/p***/ y***@***.net's password: /cygdrive/c/Users/g***/Documents/o***/n***/p***/p***: No such file or directory #### ウイルス対策ソフトによるアクセス制限の変更 アクセス可能プログラム一覧にmintty.exeを入れてみました。 Cygwinというプログラムがあるのかと思ったら、そうではなさそうに見えました。 そもそもコントロールパネルのプログラム一覧にも並んでいないので、この操作は全く方向音痴なのかもしれません。 ### 補足情報(FW/ツールのバージョンなど) CYGWIN_NT-10.0 DESKTOP-5LAVQ44 3.1.2(0.340/5/3) 2019-12-21 15:25 x86_64 Cygwin Windows10 pro 64bit 以上です。 Linux慣れなさすぎなのもあり、お手上げになってしまいました。 お力をお貸しください、よろしくお願いします。
回答: ※質問文中のPATHがどうにも読みづらいですので、以下のようなものと仮定しての回答です。 転送元 | 表記 | PATHの値 | | --- | --- | | WindowsでのPATH | C:\Users\guser\Documents\odir\ndir\pdir\pdata.txt | | CygwinでのPATH | /cygdrive/c/Users/guser/Documents/odir/ndir/pdir/pdata.txt | 転送先 | 表記 | PATHの値 | | --- | --- | | -- | yuser@example.net:/home/yuser/pdata.txt | 質問者さんはCygwinのターミナル上で作業されていると思いますが、お使いの`scp`コマンドはCygwinから見て`/cygdrive/c/windows/System32/OpenSSH/scp`にインストールされたものですので、Cygwin用の`scp`コマンドではありません。恐らくWindows用のOpenSSLのツールの一部としてインストールされたものだと思います。Cygwin用の`scp`は、`/usr/bin/scp`です。`/cygdrive/c/...`式のPATH記述方法は、Cygwinのコマンド群しか解釈できません。その為、非Cygwin版の`scp`コマンドの実行時において`No such file or directory`エラーとなります。 ですので、Cygwin上からではなく、Windowsのコマンドプロンプト上から`scp`コマンドを使うのが、ややこしくない使い方です。 ``` C:> scp C:\Users\guser\Documents\odir\ndir\pdir\pdata.txt yuser@example.net:/home/yuser/pdata.txt ``` もし、あくまでCygwin上から操作したいのであれば、`/cygdrive/c/...`式のCygwin用PATH文字列ではなく、シングルクォーテーション(`'`)でWindows用PATHをくくれば、使えるはずです。 ``` $ scp 'C:\Users\guser\Documents\odir\ndir\pdir\pdata.txt' yuser@example.net:/home/yuser/pdata.txt ``` なお、前述したようにCygwinでもCygwinのセットアッププログラムであるsetup.exe から`scp`コマンドをインストールすれば、Cygwin版の`scp`コマンドが使えます。Cygwin のサイト、「Installing Cygwin」のリンクからセットアッププログラムである「setup*.exe」をダウンロードし、実行することで各種コマンドを選択的にインストールします。 ですが、既にWindows用のOpenSSLのツール群がインストールされているらしいのと、Cygwinがインストールされているので、その他のコマンドのバージョンの競合の問題もあります。使い分けの設定が難しいのであるならば、今のまま使い続けた方が良いでしょう。