を使用するシェルスクリプトを作成していますscp
。ターゲットディレクトリが存在しない場合は、誤解を招くエラーメッセージが表示されます。つまり:
scp user@remote-host:/path/to/existing/file /local/non-existing/directory/
私が受け取ったエラーは次のとおりです。
/local/non-existing/directory/: Is a directory
謎ですね…
Directory /local/non-existing/directory/ does not exist
- これが誰にでも理解できるのか、それとも私だけそうなのか?
- これがscpの欠陥だと思いますか?
- 私はUbuntu 14.04.3 LTSを実行しています。他のオペレーティングシステムでも同様ですか?
答え1
抜け穴
それを発見関連エラー。 Ubuntu 14.04.5(openssh 1:6.6p1-2ubuntu2.8)で修正されたようです。
の説明があります。Red Hatのバグレポート:
この問題は、raw openSSHにも存在し、既存の親ディレクトリがある存在しないディレクトリに何かをコピーしようとしたときに発生します。この境界条件の確認がありません。 scpプロセスが上記のファイルに書き込もうとするとエラーメッセージが表示されますが、ファイルがスラッシュ(ディレクトリの解釈)で終わり、これが現在のエラーメッセージの理由です。
元の答え
再現できません(Ubuntu 14.04.5 LTSおよびLinux Mint 17でテスト)。
/local/non-existing/directory
存在しない場合は、次のようscp
に失敗します。/local/non-existing/directory: No such file or directory
/local/existing/directory
ある場合は、次にscp
コピーしてください。file
/local/existing/directory/file
remote-host:/path/to/existing/file
ディレクトリの場合、scp
次のように失敗します。scp: file: not a regular file
トラブルシューティング
ssh user@remote-host "file /path/to/existing/file"
リモートファイル(またはディレクトリ)に関する情報を提供する必要があります。
file /local/non-existing/directory/
あなたのローカルディレクトリに関する情報を提供する必要があります
mkdir -p /local/non-existing/directory/
必要に応じて、ディレクトリは親ディレクトリと共に繰り返し作成されます。
その後、mkdir -p
それがfile
実際にファイルであり、/local/non-existing/directory/
実際にディレクトリである場合、コマンドscp
は機能します。