ユーザーのコンピュータからサーバーにフォルダを転送できません。

ユーザーのコンピュータからサーバーにフォルダを転送できません。

何らかの理由で、デスクトップ Mac から Linux サーバーにフォルダを転送できなくなります。

エラーは次のとおりです。

(base) my_computer:~ username$ scp -r /source_directory/filename user@server:/home/user/destination
user@server's password: 
scp: realpath /home/user/filename: No such file
scp: upload "/home/user/filename": path canonicalization failed
scp: failed to upload directory /source_directory/filename to /home/user/destination

この問題に関するいくつかの注意事項:

  • すべてのファイルが存在します。具体的には/source_directory/filenameと同じです/home/user/destination/home/user/filename、存在せず、コピーする前には存在しないでください(ソースからターゲットにコピーした後に存在します)。
  • コンピュータの内部ドライブからサーバーにコピーしようとしたり、コンピュータに接続されている外部ドライブからコピーしようとすると、上記のエラーが発生します。
  • 私たちのネットワークの他のコンピュータではこのエラーは発生しません。
  • 以前は何の問題もなくできました。
  • 問題なく単一のファイル(.wavなど)をコピーできますが、フォルダが空であるか、-rコマンドを使用しなくてもフォルダはコピーできません。
  • サーバーからマイコンピュータにコピーするのに問題はありません。
  • SSHには何の問題もありません

なぜですか?どのような回避策を試すべきですか?

アップデート1:

私がこれをしようとすると:https://www.reddit.com/r/linuxquestions/comments/uj2y65/strange_scp_r_error/

私はこれだけを得ます:

usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 ... [[user@]host2:]file2

アップデート2:

私のmacOSはVentura 13.1です。私の他のコンピュータはこのバージョンを使用していません。他のコンピュータからサーバーにscpを正常に実行できます。

ベストアンサー1

機密情報の漏洩を避けるために質問へのパスを損なったようですが、そうすることで実際に使用するコマンドの構造が少し変わりました。

このpath canonicalization failedエラーは、scpSFTP プロトコルを使用するようにデフォルト値が変更されたために発生し、今までよりもパス要件が厳しくなりました。特に、新しいバージョンでは、ディレクトリの後にスラッシュを含めないでください。パス名のスペースは、前に\ バックスラッシュ()を使用してエスケープする必要があります。

失敗します。

scp -r /source_directory/filename user@server:/home/user/destination/

これは成功します:

scp -r /source_directory/filename user@server:/home/user/destination

一時的に元のscpプロトコルに戻すことができますが、scp -Oこれは推奨されず、長期間続かない可能性があります。変更の理由の詳細については、質問に対する回答をお読みください。scpは安全ではありませんか? sftpに置き換える必要がありますか?、特に引用する人CVE-2019-6111

おすすめ記事