/ramdisk에서 일반 /ssd로 많은 파일(분당 약 10,000개)을 지속적으로 이동하려고 하는데 모든 파일이 거기에 있는 것은 아닙니다.
소스가 존재하지 않아 실패 하면 mv /ramdisk/file55 /ssd/file55
대상에 무엇이든 쓰려고 합니까?
대부분의 파일이 /ramdisk에 저장되는 이유는 대상 SSD가 닳을까봐 걱정되어서 여쭤보는 것입니다.
답변1
이 질문에 답하는 유일한 방법은 소스 코드를 살펴보는 것입니다. 구현은 다를 수 있습니다.
특히, mv
나는 당신이 다음을 언급하고 있다고 가정합니다.GNU Coreutils.
mv
코드의 미묘한 차이를 모두 이해했는지는 모르겠지만 다음과 같은 사실을 알 수 있습니다.
- 함수 중
src/mv.c
하나do_move(const char *source, const char *dest, const struct cp_options *x)
는 입니다mv
. 이 함수는 이라는 다른 함수를 호출합니다copy
. - 에서 호출되는 함수는
src/copy.c
기본적 으로 호출되는 다른 함수를 둘러싼 래퍼입니다 .copy
do_move
copy_internal
- 함수 상단에서 소스 파일에
copy_internal
액세스를 시도합니다 .stat
실패하면 아무 것도 하지 않고 종료됩니다.
따라서 다음과 같이 대답하는 것이 안전하다고 생각합니다.
존재하지 않는 파일에 액세스하려고 시도하면 다양한 검사를 통과할 때까지 mv
대상에 영향을 미치지 않습니다 .