어떤 이유로든 더 이상 데스크탑 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입니다.