입력이 출력보다 큰 경우`dd '가 중지됩니까? (출력 파일은 파티션 임)


-1

하나의 파티션을 하드 드라이브의 다른 위치, 즉 다음 위치로 옮기고 싶습니다. sda1sda2, 그리고 나서 나는에서 부팅하고 싶다. sda2.

우선 파티션 테이블이나 부팅이 불가능한 부분이 엉망이 될지 모르겠지만 시도 할 것입니다. HFS + 파티션이고, 어떻게 동작하는지 전혀 경험하지 못했습니다.

그것을 무시하면, 내가하려고하면 dd 내용을 하나에서 다른 (실제로는 별도의 큰 파티션에있는 파일에 내용을 배치하고 있습니다), 어떻게됩니까? sda2 공간이 부족합니까? 드라이브에 물리적으로 위치한 다음 파티션으로 계속 실행됩니까? 아니면 단순히 멈추고 오류가 발생합니까?

답변:


3

만약에 sda2 공간이 부족합니까?

사용하는 경우 of=/dev/sda2sda2 공간이 부족하다. dd 끝낼 것이다 No space left on device. 특별한 파일 사용과 같은 포인트 중 하나 /dev/sda2 당신이 그 경계를 넘어서 읽거나 쓰지 않는지 확인하고 있습니다. /dev/sda.

결과 파일 시스템 sda2 들어갈만큼 작지 않은 한 부패 할 것입니다. 드문 파일 시스템을 가지고있는 파티션보다 작은 파일 시스템을 가질 수 있습니다. 이 경우에만 dd 더 작은 (그러나 충분히 큰) 파티션으로 파티션하는 것은 전체 파일 시스템을 복사합니다.

하지만 네가 사용했다면 of=/dev/sdaseek=… 정확히 어디서 쓰기 시작하니? sda2 시작하고, if ~보다 큼 sda2, 그 다음에 dd 끝까지 행복하게 쓸 것입니다. sda2, 그것은 전체를 열었 기 때문에 sda 그것 전체에 접근 할 수 있습니다. 우리는 사용 sdaN 이러한 사고를 피하기 위해 추상화.


좋습니다. 또한 sda2가 약간 더 크다고 말할 수 있습니다. 아마도 1 ~ 2MB 정도 될 것이고, 이미 sda2 이전에 파일 시스템을 포함하고 있습니다. sda1이 파일 시스템이고 sda2 = sda1 인 경우 dd를 원한다면 sda2를 제로로 설정해도 상관 없습니까? 아니면 이미 설정되어있는 비트를 그대로 둘 수 있습니까?
simernes

@simernes이 경우 끝에 그 비트를 남길 수 있습니다. 모든 파일 시스템은 얼마나 큰지를 알아야한다. (파일 시스템은 헤더에이 정보를 저장한다. HFS +의 totalBlocks ), 끝을 초과하는 추가 공간 (0이든 아니든간에)은 아무런 차이가 없습니다.
Kamil Maciorowski

1

직접 dd'ing하는 경우 of=/dev/sda2:

파티션 장치 노드는 파티션 테이블에 따라 커널에 의해 경계 지어 지므로 끝에있는 모든 쓰기는 -ENOSPC ( "장치에 남은 공간 없음")을 반환합니다. 어떤 종류의 쓰기 오류가 발생하면 dd가 중지됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.