파일이 Linux에서 대상으로 완전히 전송될 때까지 임시 이름으로 대용량 파일을 복사하거나 이동합니다.

파일이 Linux에서 대상으로 완전히 전송될 때까지 임시 이름으로 대용량 파일을 복사하거나 이동합니다.

대용량 파일(15GB)을 Linux의 디렉터리로 복사/이동하려고 하며 해당 이벤트에 의존하고 싶습니다. 이제 이라는 파일이 있고 abc.txt다음 명령을 실행한다고 가정해 보겠습니다 .

mv /usr/tmp/abc.txt /usr/data/

이동 프로세스가 시작되면 데이터 디렉터리에 실제 파일 이름을 가진 파일이 표시됩니다. 즉, abc.txt데이터가 여전히 전송 중입니다. 데이터 디렉터리가 해당 디렉터리의 파일을 나열하면 abc.txt내 종속 프로세스는 파일이 사용 가능하다고 생각하고 종속 프로세스를 시작하지만 파일이 완전히 이동되지 않아 내 종속 프로세스가 조기에 실행됩니다.

임시 이름으로 파일을 이동할 수 있는 방법이 있습니까? 즉, 데이터 전송이 진행되는 동안 임시 이름(일부 스왑 파일 이름)을 사용하고 전송이 완료되면 이름을 실제 파일로 변경할 수 있습니까?

답변1

서로 다른 두 파일 시스템 간에 이동해야 하므로 파일이 실제로 복사됩니다. 그런 다음 먼저 복사를 시도하고 완료되면 대상 내에서 이동하십시오. 이렇게 해야 합니다:

mv /usr/tmp/abc.txt /usr/data/.abc.txt && mv /usr/data/.abc.txt /usr/data/abc.txt

귀하의 보기 프로세스가 숨겨진 파일을 인식하지 못한다고 가정합니다. 그렇지 않으면 대상 위치에 임시 디렉터리나 유사한 디렉터리를 만들 수 있습니다.

관련 정보