Linux에서 cp를 사용하여 복사 작업 중에 파일 이름이 바뀌면 어떻게 되나요?

Linux에서 cp를 사용하여 복사 작업 중에 파일 이름이 바뀌면 어떻게 되나요?

그래서 사용하고 싶은데...

cp /var/log/somelogs/* ./temp

...일부 로그 파일을 임시 폴더에 복사하고 분석합니다. 문제는 로그 파일을 생성하는 프로세스가 내 통제하에 있지 않고 로그가 매우 자주 순환된다는 것입니다. 바쁜 시간에는 15초마다! 결국 cp가 발생하고 동시에 로그 회전이 발생합니다. 이런 일이 발생하면 어떻게 되는지 궁금합니다.

폴더를 자세히 살펴보기 위해 1초도 기다리지 않고 폴더가 손상되었는지 어떻게 알 수 있습니까? 오류 코드로 인해 cp가 종료/충돌할 수 있습니까? 표준 출력으로 무언가를 인쇄합니까? 아니면 손상되었거나 이름이 잘못되었을 수 있는 폴더의 로그를 자동으로 전달하는 것일 수도 있습니다.

불행하게도 fs는 ext4이고 내 통제 범위를 벗어났기 때문에 스냅샷을 활용할 수 없습니다. shh :/

답변1

명령줄의 와일드카드 문자(" /var/log/somelogs/*") 가 먼저 확장됩니다( cp실행이 시작되기 전). 생성된 파일 목록에 더 이상 존재하지 않는 파일 이름이 포함된 경우( cp이전 파일을 복사할 때 실행되는 로그 회전 으로 인해 ) cp불평하고 다음 파일을 시도한 후 0이 아닌 종료 상태( bash변수 $?)를 반환합니다. 바라보다 man cp.

와일드카드 확장을 참조하세요.

echo cp /var/log/somelogs/* ./temp

관련 정보