이 주제에 설명된 명령을 사용하여 파일의 백업 복사본을 만들었습니다 cp
(Linux에서 파일을 복사하려면 파일이 대상에 존재하는 경우 복사하지 마십시오).https://superuser.com/a/1377730/1008457
명령은 다음과 같습니다:
while true; do echo n; done | cp -Ri /origin /destination 2>/dev/null
좋은 결과. 하지만 복사 프로세스에 오류(하드 드라이브에 대한 읽기/쓰기 오류)가 없는지 어떻게 확인할 수 있습니까? 쉘 변수 $?
a 가 충분하다는 점을 고려하면 0
복사하고 반환하기에 충분합니까?
답변1
cp
0
오류가 발생하지 않으면 종료 상태가 반환되고, 그렇지 않으면 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
백업에 유용해 보입니다 (참조 ).-Rd
man cp