나는 한 디렉토리 트리에서 다른 디렉토리 트리로 상당히 많은 양의 데이터(20GB 이상)를 이동하고 있습니다. 일반적으로 동일한 파일 시스템에 있지만 때로는 다른 파일 시스템에 있는 경우도 있습니다. cp
혹시라도 원본 데이터를 유지하기 위해 이렇게 했습니다 . 복사가 완료되면 데이터가 올바르게 복사되었는지 확인한 후 원본 데이터를 삭제합니다. mv
나중에 원시 데이터를 정리하기에는 너무 게으른 경우 가끔 이 작업을 수행합니다. 하지만 순전히 기술적인 관점에서 어떤 작업이 더 효율적인지 궁금합니다. 왜?
답변1
기술적으로는 원자적이지 않으며 mv
소스와 대상이 다른 파일 시스템에 있는 경우 실제로 cp
는 + 입니다 unlink()
. 따라서 먼저 mv
파일이 복사된 다음 unlink()
디렉터리 항목 목록에서 파일을 제거하기 위해 호출됩니다.
따라서 이 경우 AFAIU를 ( ) 사용 cp
하거나 직접 사용하는 것은 전적으로 개인 취향입니다.rm
unlink()
mv
mv
동일한 파일 시스템에서 -ing을 사용하는 동안 오버헤드를 줄이기 위해 mv
동일한 파일 시스템에서 원자성(호출)으로 사용해야 합니다 rename()
.
FS 종속성 동작을 지적한 @muru 및 @psusi에게 감사드립니다.