내 디스크를 하나의 대용량 파일로 처리하려면 어떻게 해야 합니까?

내 디스크를 하나의 대용량 파일로 처리하려면 어떻게 해야 합니까?

FreeBSD에서 장치 파일에 대해 읽고 있는데 이해가 잘 되지 않습니다. 연습을 위해 다음 시나리오를 생각해 냈습니다. 장치 파일을 사용하면 문제가 해결될 수 있을 것으로 생각됩니다.

내가 시간제 스파이이고 일회용 패드를 만들어야 한다고 상상해 보세요. 안전한 FreeBSD 상자로 가서 /dev/urandom패드 파일에 뭔가를 쓸 수 있습니다. 왜냐하면 이 소스의 임의성이 충분하다는 것을 알고 있기 때문입니다(tm). 패드 파일이 포함된 플래시 드라이브가 향후 연락처에 전달됩니다.

그러나 드라이브에는 임의 바이트로 가득 찬 단일 파일만 포함되어 있으므로 전체 파일 시스템을 디스크에 쓰는 것은 낭비처럼 보입니다. USB를 임의의 데이터로 채우는 것은 어떻습니까?

내 질문: 디스크에서 원시 데이터를 읽고 디스크에 원시 데이터를 쓰는 목표를 달성하는 방법은 무엇입니까? dd디스크의 장치 파일을 가리켜야 합니까 ?

답변1

예, 장치 파일을 원시 장치 파일로 처리하고 일반 파일에 액세스하는 것과 동일한 API를 사용하여 장치 파일에서 데이터를 읽고 쓸 수 있습니다. 대부분의 경우 dd장치 파일에서 데이터를 사용하거나 간단히 가져올 수 있습니다.

원시 장치와 파일 시스템의 실제 파일 간에는 몇 가지 실질적인 차이점이 있다는 점을 명심하세요.

  • 장치의 크기는 고정되어 있습니다. 더 적은 양의 데이터를 쓰면 남은 공간이 동일하게 유지됩니다. 해당 정보를 전달하는 다른 방법이 없으면 실제로 얼마나 많은 데이터가 기록되었는지 확인할 수 있는 방법이 없습니다.
  • 장치에 권한이 없습니다.장치 파일장치에 권한이 있음을 나타내지만 이러한 권한은 장치 자체로 전파되지 않으며 단순히 장치가 연결된 시스템에 의해 할당됩니다. USB 드라이브를 나타내는 장치 파일을 사용하는 경우 chmod해당 파일을 분리하고 다른(또는 동일한) 시스템에 연결하면 권한 변경 사항이 유지되지 않습니다.
  • 장치에 이름이 없거나 적어도 사용자가 변경할 수 있는 이름이 없습니다. 운영 체제는 적절하다고 판단되는 장치 노드 이름을 장치에 할당합니다. 볼륨 이름 같은 것들은 파일 시스템이나 파티션 테이블에 저장되는데, 전체 장치를 원시 스토리지로 액세스할 때는 그런 것이 없습니다.
  • 대부분의 운영 체제는 루트가 아닌 임의의 사용자가 장치 파일에 액세스하는 것을 허용하지 않지만 일부 운영 체제는 루트가 아닌 로컬 사용자가 USB 드라이브와 같은 것을 마운트하는 것을 허용할 수 있습니다.

(참고: 저는 Linux 배경 지식을 가지고 있지만 이러한 개념은 모든 UNIX 계열 시스템에서 거의 동일합니다.)

관련 정보