40일이 지난 파일을 원격에서 로컬 호스트로 전송하고 싶습니다. 원격 서버에 연결할 수 있지만 원격 서버에서 로컬 서버로 파일을 전송할 수 없습니다. 해당 파일이나 디렉터리가 없지만 파일이 원격 호스트에 존재한다는 오류가 발생합니다.
세부 사항:
file=`sshpass -p "password" ssh username@server_ip "find /arch -type f -ctime -40"`
sshpass -p "password" scp -r username@server_ip:$file /arch
echo SCP Completed.
오류 정보:
cp: cannot stat ‘/arch/file1.xls’: No such file or directory
답변1
다음 중 한두 가지에 주의를 기울여야 합니다.
- 권한: 파일을 읽을 수 있는 올바른 권한이 없을 수 있습니다.
- 여러 줄 답변: 조회 결과로 여러 파일이 제공될 수 있습니다.
간단히 말해서, 아마도 귀하의 문제는 sshpass
.
이제부터 권한 관련 문제는 없는 것으로 간주합니다.
당신이 할 수 있는 일은 다음과 같습니다:
files="$(sshpass -p "passwd" ssh -l username rhost "find /arch -type f -ctime -40")"
for file in ${files}; do
if sshpass -p "passwd" scp "username@rhost:${file}" /arch; then
printf "SCP Completed\n"
fi
done
이론적으로는 접근할 수 없는 파일(폴더) 에 인쇄되기 $files
때문에 스크랩할 수 없는 콘텐츠는 없으므로 별도로 관리해야 합니다.find
stderr
모든 옵션 중에서 루프에서 조건을 결합 stderr
및 추가 하거나 다른 변수(또는 파일)에 오류를 저장하고 별도로 루프를 반복할 수 있습니다.stdout
for