"/dev/st0"과 같은 테이프 장치가 "cp"와 같은 명령을 사용하여 내용을 복사할 수 없는 이유는 무엇입니까?

"/dev/st0"과 같은 테이프 장치가 "cp"와 같은 명령을 사용하여 내용을 복사할 수 없는 이유는 무엇입니까?

책에서 이런 말을 들었는데

테이프 장치는 일회용 I/O 장치이므로 "cp"와 같은 명령을 사용하여 복사할 수 없습니다.

저자는 다음을 사용할 것을 권장합니다 'tar'.

tar -cvf /dev/st0 /home

"cp"가 어딘가에 내용을 반복해서 읽고 쓰는 것은 알지만 "cp"를 사용하여 내용을 테이프 장치에 복사하는 것도 성공할 것이라고 생각합니다. 하지만 저는 그런 장치가 없어서 제 가설을 검증할 수 없습니다. 그럼, 당신의 의견은요?

답변1

cp하나의 파일을 장치가 아닌 다른 파일로 복사하는 데 사용됩니다 . 이 두 가지 방법으로는 파일을 프린터로 보낼 수 없습니다 cp file /dev/lp0.

파일을 테이프에 쓸 수는 있지만 cat file > /dev/st0파일 이름, 권한 또는 기타 메타데이터가 무엇인지 알 수 없습니다. tar다시 읽을 때 재구성될 수 있도록 이 정보가 포함된 헤더를 파일 데이터 앞에 추가합니다.

그런데, 나는 당신의 책에서 "일회용 I/O 장치"가 무엇을 의미하는지 모르겠습니다. 이것은 문자 장치입니다(아이러니하게도 정렬된 블록만 쓸 수 있다는 의미입니다). 이는 또한 cat파일 크기가 필요한 블록 크기의 정확한 배수가 아닌 경우 위 명령이 결국 실패할 수 있음을 의미합니다.

그러니 그냥 사용하세요 tar:-)

답변2

테이프에는 파일이 포함되어 있지만 파일 시스템은 포함되어 있지 않습니다*. 두 가지 모두에 "문서"라는 단어를 사용하는 것은 약간 오해의 소지가 있습니다. 테이프의 파일은 EOF 표시로 묶인 바이트 스트림에 지나지 않습니다. 그게 다야. wurtel이 쓴 것처럼 테이프의 "파일"에는 이름이나 속성이 없습니다. 즉, 이러한 파일에는 디렉터리가 없습니다. 디렉토리 = 파일 시스템.

cp는 파일 시스템의 파일을 처리합니다. 파일을 복사합니다명명 된명령줄을 통해 한 파일 시스템에서 다른 파일 시스템으로목차동일하거나 다른 파일 시스템에 있습니다. 생각해 보십시오. 테이프에 파일 시스템이 없다는 것은 파일 이름이나 디렉터리가 없다는 것을 의미합니다.CP테이프와는 아무 상관이 없습니다.

이 책의 저자가 추천한 것은 우연이 아니다.아스팔트여러 파일을 테이프에 저장합니다. TAR는 다음을 의미합니다.시간원숭이증강 현실중국 부추. TAR 형식과 유틸리티는 여러 파일의 내용, 이름, 속성은 물론 디렉토리 트리에서의 위치도 패키지화하고 전체 내용을 테이프에 기록할 수 있도록 만들어졌습니다. 항상 그런 것은 아니지만 일반적으로 테이프에 파일을 저장하는 방법은 다음과 같습니다.

*각주: LTFS라는 테이프 파일 시스템이 있습니다. 이것은 비교적 새로운 것입니다. 테이프는 두 개의 파티션으로 나누어져 있는데, 첫 번째 파티션은 디렉터리를 포함하고 두 번째 파티션은 파일 내용을 포함합니다. LTFS는 일반적인 파일 시스템처럼 작동하므로 cp를 사용하여 파일을 복사하고 끌어서 놓을 수도 있습니다. 하지만 방금 "테이프"를 언급했다면 LTFS가 없는 일반적인 기본 테이프 구성에 대해 이야기하고 있다고 가정합니다.

답변3

테이프를 사용할 수 있습니다 cp. 그러나 /dev/st0과 같은 장치는 종료 시 되감도록 구성됩니다. 따라서 두 번째 항목이 cp첫 번째 항목을 덮어쓰게 됩니다. /dev/nst0(?)(닫을 때 장치를 되감지 않음)을 사용하면 테이프의 모든 파일 끝에 EOF 표시가 나타납니다. 테이프를 꺼내면 테이프의 끝을 나타내는 두 번째 EOF가 기록됩니다. EOT 태그는 빠르게 조회할 수 있으므로 N번째 파일의 빠른 검색이 전적으로 가능합니다. 불가능한 것은 테이프 시작 부분에서 파일을 업데이트하는 것입니다. 닫으면 EOF가 기록되고, 되감으면 테이프 끝을 나타내는 두 번째 기록이 기록됩니다.

관련 정보