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