더 나은 커버 방법은 무엇입니까?

더 나은 커버 방법은 무엇입니까?

우리는 현재 클래식 planA를 진행하고 있습니다.

어느 것이 더 좋은지 알고 싶습니다.

fileA둘 다 fileB존재하며 크기는 ~ 50-100M입니다.

Linux/mac에서 동일한 NFS 마운트를 가정

이것이 두 파일 모두에 존재하는 오버레이라고 가정합니다.

# planA - we do this way
mv /pathA/fileA /pathB/fileB

# planB
rm /pathB/fileB; mv /pathA/fileB /pathB/fileB

# planB1 - I think is the same as planB, but not sure
unlink /pathB/fileB; ln /pathA/fileA /pathB/fileB

답변1

파일 IO의 경우 비용이 많이 드는 작업은 데이터를 이동하는 것입니다.

파일 시스템 내에 있는 경우( ln작동하려면 반드시 있어야 함) 구별은 의미가 없습니다.

각각의 경우에 일어나는 일은 디렉터리 항목이 다른 인덱스 노드를 가리키도록 수정되는 것뿐입니다. 기껏해야 이것은 무시할 수 있는 차이이므로 "명령이 얼마나 빨리 시작되는지"를 실제로 비교하는 것입니다.

하지만 한 가지 주의할 점이 있습니다 -마지막명령은 /pathA/fileA그대로 유지됩니다. 이는 하드 링크이므로 두 디렉터리 항목이 모두 동일한 데이터를 가리키게 됩니다.

이것은 미래에 사람들을 혼란스럽게 할 수 있습니다.씌우다fileA, 다음과 같은 경우 한 가지 작업을 수행합니다.편집하다그것은 다른 일을 할 것입니다.

따라서 간단히 를 사용하면 됩니다 mv. 전반적으로 이것은 큰 차이를 만들지 않으며 실제로 달성하려는 것이 가장 명확합니다.

관련 정보