Unix SCP 명령은 응답 코드 > 0에도 불구하고 파일을 계속 복사합니까?

Unix SCP 명령은 응답 코드 > 0에도 불구하고 파일을 계속 복사합니까?

이 경우 scp 명령은 응답 코드 > 0을 반환했지만 파일이 성공적으로 복사되어 결국 데이터베이스에 로드되었으므로 파일이 손상되지 않았음을 의미합니다.

Unix SCP 명령은 응답 코드 > 0에도 불구하고 계속 파일을 복사합니까? resp > 0이면 파일이 손상되거나 전혀 전송되지 않습니까? resp > 0은 복제가 중지되고 파일이 복사되지 않았음을 의미할 것으로 예상했습니다.

사용된 코드:

scp -r [!.]* [email protected]:/home/user/DATA_* /app/data
if (($? > 0)); then touch conn_error_172_0_0_1.bad; fi

이 매뉴얼에 따르면 응답 코드 > 0은 오류입니다.http://support.microfocus.com/kb/doc.php?id=7021696

답변1

Unix SCP 명령은 응답 코드 > 0에도 불구하고 파일을 계속 복사합니까?

이 질문은 의미가 없습니다. scp해당 코드는 수행 중이던 모든 작업이 완료된 후에만 해당 코드를 반환합니다. 따라서 반환 코드를 받으면 scp작업이 완료된 것입니다. 그 후에는 아무 일도 일어나지 않았습니다. 아무 것도 진행할 scp가 없습니다!

scp오류(및 오류가 발생한 시점)에 따라 모든 파일, 모든 파일 또는 일부 파일만 복사할 수 있습니다 .

원자 복사본이 필요한 경우 rsync옵션을 --delay-updates대신 사용하십시오 scp.

답변2

주 문서 scp,

유틸리티는 성공 시 scp0을 종료 하고 오류가 발생하면 >0을 종료합니다.

이는 특별히 정확하지 않으므로 실험을 시도해야 합니다.

scp remoteHost:/etc/no_such_file /tmp; echo SS=$?    # "SS=1"
scp remoteHost:/etc/hosts /tmp; echo SS=$?           # "SS=0"
scp no_such_host:/etc/hosts /tmp; echo SS=$?         # "SS=255"

이제 조합을 살펴보겠습니다.

scp remoteHost:/etc/no_such_file remoteHost:/etc/hosts /tmp; echo SS=$?    # "SS=1"

종료 상태가 0이 아니더라도 파일은 /etc/hosts성공적으로 복사되었습니다. 일부 파일은 복사되고 다른 파일은 복사되지 않는 귀하의 경우인 것 같습니다.

각 경우의 종료 상태는 사용 여부 -O( scp새 기본 프로토콜 대신 강제 프로토콜)와 관계없이 동일합니다.sftp

내가 내린 결론은 문서의 결론입니다. 종료 상태가 0이 아니면 어떤 종류의 오류가 발생하고, 종료 상태가 0이면 어떤 전송에서도 오류가 발생하지 않습니다.

관련 정보