"cp" 명령이 올바르게 실행되었는지 확인하세요.

"cp" 명령이 올바르게 실행되었는지 확인하세요.

이 주제에 설명된 명령을 사용하여 파일의 백업 복사본을 만들었습니다 cp(Linux에서 파일을 복사하려면 파일이 대상에 존재하는 경우 복사하지 마십시오).https://superuser.com/a/1377730/1008457 명령은 다음과 같습니다:

while true; do echo n; done | cp -Ri /origin /destination 2>/dev/null

좋은 결과. 하지만 복사 프로세스에 오류(하드 드라이브에 대한 읽기/쓰기 오류)가 없는지 어떻게 확인할 수 있습니까? 쉘 변수 $?a 가 충분하다는 점을 고려하면 0복사하고 반환하기에 충분합니까?

답변1

cp0오류가 발생하지 않으면 종료 상태가 반환되고, 그렇지 않으면 1. 그렇습니다. 스크립트에서 이 값을 테스트하여 오류가 발생하지 않는지 확인할 수 있습니다.

현재 표준 오류에 대해 Discard 명령을 사용할 수도 있습니다 2>/dev/null. 이 옵션을 생략하면 모든 오류가 터미널에 인쇄됩니다. 이는 stdout및 의 기본값 입니다 stderr. 또는 stderr확장자를 사용하여 로그 파일로 캡처할 수 있습니다 2>path/to/log/file.


게다가 (쿠사로난다가 그랬듯이댓글을 달았습니다.) 을 사용하여 명령을 단순화할 수 있습니다 -n. --no-clobber이는 대상을 덮어쓰지 않음을 의미합니다.

cp -Rn origin destination 2>log_file

이후 스크립트를 입력하면 $?성공 여부를 테스트할 수 있습니다.

또는 표준 구문을 사용할 수 있습니다 if.

if cp -Rn origin destination 2>log_file; then
    echo "OK"
else
    echo "Failed"
fi

또는 약어:

cp -Rn origin destination 2>log_file && echo "OK" || echo "Failed"

또한 -a(대신 ) 역참조 링크를 구현하므로 -R백업에 유용해 보입니다 (참조 ).-Rdman cp

관련 정보