을 사용하는 쉘 스크립트를 작성 중입니다 scp
. 대상 디렉토리가 존재하지 않으면 오해의 소지가 있는 오류 메시지가 나타납니다. 즉:
scp user@remote-host:/path/to/existing/file /local/non-existing/directory/
내가 받은 오류는 다음과 같습니다.
/local/non-existing/directory/: Is a directory
수수께끼네요... 다음과 같았으면 좋겠습니다.
Directory /local/non-existing/directory/ does not exist
- 이것이 누구에게나 이해가 되는가, 아니면 나만 그런가?
- 이것이 scp의 결함이라고 생각하십니까?
- 저는 Ubuntu 14.04.3 LTS를 실행하고 있습니다. 다른 운영 체제에서도 마찬가지입니까?
답변1
허점
그것을 발견관련 오류. Ubuntu 14.04.5(openssh 1:6.6p1-2ubuntu2.8)에서 수정된 것 같습니다.
에 대한 설명이 있습니다.Red Hat 버그 보고서:
이 문제는 원시 openSSH에도 존재하며 기존 상위 디렉토리가 있는 존재하지 않는 디렉토리에 무언가를 복사하려고 할 때 발생합니다. 이 경계 조건에 대한 확인이 누락되었습니다. scp 프로세스가 위 파일에 쓰려고 할 때 오류 메시지가 발생하지만 파일이 슬래시(디렉토리 해석)로 끝나며 이것이 현재 오류 메시지의 이유입니다.
원래 답변
재현할 수 없습니다(Ubuntu 14.04.5 LTS 및 Linux Mint 17에서 테스트).
/local/non-existing/directory
존재하지 않으면 다음 과scp
같이 실패합니다./local/non-existing/directory: No such file or directory
/local/existing/directory
있는 경우 다음 으로scp
복사하세요 .file
/local/existing/directory/file
remote-host:/path/to/existing/file
디렉터리인 경우scp
다음과 같이 실패합니다.scp: file: not a regular file
문제 해결
ssh user@remote-host "file /path/to/existing/file"
원격 파일(또는 디렉토리)에 대한 정보를 제공해야 합니다.
file /local/non-existing/directory/
당신의 로컬 디렉토리에 대한 정보를 제공해야합니다
mkdir -p /local/non-existing/directory/
필요한 경우 디렉터리는 상위 디렉터리와 함께 반복적으로 생성됩니다.
그 후에 mkdir -p
그것이 file
실제로 파일이고 /local/non-existing/directory/
실제로 디렉토리라면 scp
명령이 작동할 것입니다.