"cp" 명령은 블록 장치에서만 사용할 수 있나요?

"cp" 명령은 블록 장치에서만 사용할 수 있나요?

~에 따르면내 마지막 질문"cp"를 사용하여 테이프 장치나 "/dev/lp0"과 같은 장치에 파일을 복사할 수는 없을 것 같습니다. 그러나 나는 아직도 그 이유를 이해하지 못합니다.

이 질문을 충분히 간단하게 만들려면 다음과 같이 말해 주세요."cp" 명령은 블록 장치에서만 사용할 수 있나요?

답변1

이에 대해 생각하는 한 가지 방법은 이러한 것들을 다른 장치 유형으로 생각하는 것입니다. "cp"는 제한된 수의 장치 유형 간에 파일을 복사하는 방법만 알고 있습니다. 파일 저장에 가장 일반적으로 사용되는 장치는 디스크 드라이브입니다. "cp"는 디스크 드라이브와 제한된 다른 장치(예: /dev/tty) 간에 파일을 복사하는 방법을 알고 있습니다.

테이프, CD, 프린터 또는 네트워크를 통해 다른 컴퓨터에 데이터를 쓰고 읽으려면 이러한 장치의 작동 방식에 대한 전문적인 지식이 필요합니다.

새로운 장치 유형이 추가될 때마다 "cp"가 향상되는 것은 전적으로 가능합니다. 그러나 이는 때때로 일부 시스템에서는 작동하고 다른 시스템에서는 작동하지 않는 다양한 명령 옵션이 있음을 의미합니다.

UNIX의 설계는 명령이 한 가지 일을 잘 수행해야 한다는 것입니다. "cp"의 경우 디스크 파일을 디스크 파일로 복사하는 것 중 하나입니다.

답변2

블록 장치와 문자 장치가 있습니다. 문자 장치의 경우 문자 스트림이 전달되거나 전달됩니다. 키보드나 테이프 드라이브 등이 있습니다. 블록 장치를 이용하면 앞뒤로 조회가 가능하므로 파일 할당 테이블을 생성하여 파일을 관리해 보세요. 디스크 등.

cp는 (마운트된) 블록 장치용입니다. 파일이 저장된 위치를 포함하는 파일 시스템 테이블에 항목을 생성합니다. 그런 다음 파일은 해당 위치에 저장됩니다. 앞으로(그리고 아마도 뒤로) 추구하는 것도 포함됩니다. 키보드로 할 수 없는 것처럼 테이프 장치로는 이 작업을 수행할 수 없습니다. 이것이 테이프 드라이브에는 cat을 사용하고 디스크에는 cp를 사용하는 이유입니다.

관련 정보