사용자 컴퓨터에서 서버로 폴더를 전송할 수 없습니다.

사용자 컴퓨터에서 서버로 폴더를 전송할 수 없습니다.

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

답변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입니다.

관련 정보