scpには、ターゲットサーバーに同じ名前のディレクトリが必要です。

scpには、ターゲットサーバーに同じ名前のディレクトリが必要です。

scpリモートサーバーにディレクトリをアップロードするために使用しています。ただし、リモートサーバーに同じ名前の「ターゲット」ディレクトリがない場合は、「ファイルなし」エラーが発生します。これは、ターゲットディレクトリが存在しない問題ではないことに注意してください(次の例では、ターゲットはリモートサーバーのホームディレクトリです)。転送されるディレクトリと名前を共有しません。

ディレクトリアップロード失敗の例:

$ mkdir test_local 
$ touch test_local/test_local.txt 
$ scp -r ./test_local [email protected]:
> scp: realpath ./test_local: No such file
> scp: upload "./test_local": path canonicalization failed
> scp: failed to upload directory ./test_local to .

ただし、リモートシステムに同じ名前の空のターゲットディレクトリを作成した場合([Eメール保護]:~/test_local)、コマンドが機能し、ローカルディレクトリの内容でターゲットディレクトリを正常に更新します。

私が理解しているように、scp同じ名前の空の「ターゲット」ディレクトリが存在しなければならないという要件はないはずですが、なぜこれが起こるのですか?

私はMacOS 13.0.1を使用しており、リモートホストはRocky Linux 8.6(Green Obsidian)を使用しています。

答え1

最新バージョンscp(ssh 9.0.0 から始まる) はレプリケーションSFTPにプロトコルを使用します。sftpこの問題はとてもみんな知ってる。解決策は-Oフラグを使用することscpです。scp -O -r

この解決策を見つけましたここ

関連情報