
何らかの理由で、デスクトップ 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
エラーは、scp
SFTP プロトコルを使用するようにデフォルト値が変更されたために発生し、今までよりもパス要件が厳しくなりました。特に、新しいバージョンでは、ディレクトリの後にスラッシュを含めないでください。パス名のスペースは、前に\
バックスラッシュ()を使用してエスケープする必要があります。
失敗します。
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。
答え2
WIN10とCygwinを使用しています。、Cygwinをバージョン1から2に更新した後も同じ問題が発生しました。 2.895~2.921。
ローカルフォルダの設定を使用しています
cd "${0%/*}" || exit
次に()を使って、scp -r -o
ローカルの相対フォルダをリモートの./folder1
場所に転送します/home/root/folder1
。
また、ターゲットフォルダを変更してみましたが、/home/root
問題は解決されませんでした。それでも次のエラーが発生します。
scp: realpath /home/root/folder1: No such file
scp: upload "/home/root/folder1": path canonicalization failed
scp: failed to upload directory ./JPSApps to /home/root
chmod
メッセージでコマンドが失敗しても
chmod: /home/root/folder1: No such file or directory
ところで、権限を付与したいフォルダを転送できないからです。
何か違うことが起きているようです。
これで、C:\Cygwin64
新しいフォルダの代わりに最後にコピーしたフォルダをコピーして問題を解決しました。しかし、これはCygwinです。