-
mv a b
-
cp a b
;rm a
이들은 두 가지 진술 문입니다. 그들이하는 것과 약간의 차이가 있습니까?
답변
관련된 파일이 동일한 파일 시스템에 있다고 가정하면 mv는 단순히 파일 시스템의 포인터를 변경하는 반면, cp는 파일의 전체 내용을 복사하고 rm은 다시 포인터를 변경합니다. 따라서 mv가 훨씬 더 효율적입니다.
답변
예, mv는 동일한 디스크에서 원자가 될 가능성이 있지만 cp와 rm의 조합은 절대 없습니다.
이것은 mv가 rename()
보장을 가진 호출 인을 사용하여 구현되었다고 가정합니다 . 예를 들어 POSIX를 인용하는 이 뉴스 그룹 post 를 참조하십시오 .
이 rename () 함수는 일반 파일에서 ISO C 표준으로 정의 된 것과 동일합니다. 여기에 포함하면 해당 정의가 확장되어 디렉토리에 대한 조치가 포함되고 새 매개 변수가 이미 존재하는 파일의 이름을 지정할 때의 동작을 지정합니다. 이 사양에서는 함수의 동작이 원 자성이어야합니다.
답변
동일한 파일 시스템에서 mv는 동일한 inode (파일 데이터 및 메타 데이터)를 가리키는 디렉토리 참조를 변경합니다.
- 원 자성 작업 (다른 프로세스 파일 작업으로 중단 될 수 없음)
- 사소한 양의 추가 디스크 공간 (디렉토리의 추가 이름) 만 사용합니다.
- 파일 권한 및 소유권 유지
- 데이터 양에 따라 훨씬 빠를 수 있습니다
복사 및 제거
- 원자가 아님 (다른 프로세스가 cp와 rm 명령 사이에 간섭 할 수 있음)
- 파일 데이터를 짧은 시간 동안 디스크에 두 번 저장해야합니다 (cp 및 rm 명령 사이).
- 파일 권한 및 소유권을 기본값으로 변경
- 데이터 양에 따라 훨씬 느리거나 실패 할 수 있음
답변
소스와 대상이 동일한 물리적 볼륨에있는 경우 첫 번째 방법은 단순히 이름을 바꾸는 것이며 파일이 매우 큰 경우에도 매우 빠릅니다.
cp
& rm
는 항상 필요하지 않더라도 모든 데이터를로드 / 저장해야합니다.
답변
mv 는 본질적으로 “이름 바꾸기”조작입니다. 이는 파일 자체가 디스크의 동일한 지점에 남아 있음을 의미합니다. 실제 파일 작업이 수행되지 않습니다.
답변
차이점은 mv는 파일 속성을 유지하지만 cp는 기본적으로 create-date를 현재 날짜로 설정하는 것과 같이 기본적으로 cp를 유지하지 않는다는 것입니다.
이 기본값을 무시하려면 “cp -p”를 사용하여 마지막 데이터 수정, 마지막 액세스 시간, 사용자 ID 및 그룹 ID (이 작업을 수행 할 권한이있는 경우에만), 파일 권한 비트 및 SUID 및 SGID를 유지하십시오. 비트.
답변
예.
mv는 파일 이름 및 위치와 관련하여 파일의 파일 시스템 메타 데이터를 변경하는 반면, cp는 파일의 별도 사본을 작성합니다. cp는 첫 번째 파일을 완전히 읽은 다음 내용을 다른 파일에 기록해야하기 때문에 시간이 훨씬 오래 걸립니다.