cpio VS 타르 및 cp

cpio VS 타르 및 cp

나는 방금 cpio에 copy-out, copy-in 및 pass-through의 세 가지 모드가 있다는 것을 배웠습니다.

tar에 비해 copy-out 및 copy-in 모드에서 cpio의 장점과 단점이 무엇인지 궁금합니다. 언제 cpio를 사용하고 언제 tar를 사용하는 것이 더 좋습니까?

통과 모드와 cp의 cpio에 대한 비슷한 질문입니다.

감사합니다!

답변1

이는 매우 일반적인 개요입니다.

CPIO는 백업 수행을 포함하여 파일 시스템 복제 작업을 더 잘 수행합니다. 하드링크, fifo 및 기타 표준 파일이 아닌 기능과 같은 기능을 유지합니다. 대부분의 CPIO 구현은 .tar 파일 읽기 및 쓰기를 포함하여 TAR이 수행하는 모든 작업을 수행합니다. CPIO는 일반적으로 표준 입력에서 아카이브로 파일 목록을 가져옵니다. 이렇게 하면 다른 것(예: )에서 목록을 파이프하는 것이 매우 쉽습니다 find.

CPIO 패스스루는 A 디렉터리에서 B 디렉터리로 복사하려는 파일 목록이 매우 긴 경우 매우 유용합니다. (예를 들어 find시스템에서 지난 2년 동안 변경된 모든 파일을 찾는 데 사용할 수 있습니다.)

TAR은 단순히 모든 표준 파일을 테이프(또는 아카이브 파일)로/에서 덤프하는 더 나은 작업을 수행합니다. (대부분의 일반적인 작업에) 사용하기가 조금 더 간단합니다. 대부분의 사람들의 간단한 백업 요구 사항을 쉽게 충족합니다. 그리고 그 인기의 대부분은 바로 이 사실에서 비롯됩니다.

그리고 이제 작은 글씨를 쓰세요. CPIO와 TAR에는 여러 가지 버전과 구현이 있습니다. 각각은 서로 다른 기능을 가지고 있으며 일부는 서로 다른 명령줄 옵션을 가지고 있습니다. 각자는 할 수 있지만 다른 사람은 할 수 없는 일이 있습니다. 하나에 국한되어 있다면 다른 것을 시도해 보세요. 누구나 좋아하는 것이 있고, 99%의 시간 동안 둘 중 하나가 작업을 수행합니다.

답변2

AE 3 Redhat에서는 cpio의 출력 스트림 크기 제한이 2GB라는 것을 발견했습니다. 그러나 tar에는 이러한 제한이 없었습니다.

다른 시스템에는 다른 제한 사항이 있을 수 있습니다.

답변3

cpio현재는 덜 유비쿼터스이고 버전 간에 일관성이 없는 댓글과 기타 배경을 통해 이해합니다 . 그러나 cpio최근에 다수의 손상된 tar 아카이브를 처리할 때 매우 유용하다고 생각하는 한 가지 이점이 있습니다. tar 파일의 첫 번째 오류에서 멈추지 않고 잘못된 데이터를 건너뛰고 최대한 많이 추출하려고 시도합니다. 예를 들어,

tar xf ./sample.corrupt.tar

인쇄할 것이다

tar: Skipping to next header
tar: Exiting with failure status due to previous errors

처음으로 오류가 발생한 후

cpio -F ./sample.corrupt.tar -i -v

추출된 파일을 인쇄하고 각 오류에 대해 다음을 인쇄합니다.

cpio: invalid header: checksum error
cpio: warning: skipped 6 bytes of junk

cpio: invalid header: checksum error
cpio: warning: skipped 2 bytes of junk

etc...

tar 형식은 각 아카이브 헤더가 512 경계에 정렬될 것으로 예상하지만 손상으로 인해 헤더가 잘못 정렬된 경우 cpio가능한 한 많이 추출하기 위해 최선을 다합니다.

답변4

열린 RPM 파일을 추출하는 것 외에 다른 이유로 cpio를 사용할 이유가 없습니다.disrpm또는rpm2cpio그러나 tar보다 cpio가 더 나은 경우도 있을 수 있습니다.

역사와 인기

둘 다타르그리고CPIO에 도입된 경쟁 아카이브 형식입니다.버전 7 유닉스1979년에 이후에 포함됨POSIX.1-1988, 다음 표준인 POSIX.1-2001에는 tar만 남았습니다.1.

Cpio의 파일 형식은 여러 번 변경되었으며 버전 간에 완전히 호환되지 않습니다. 예를 들어, 이제 바이너리 파일 정보 데이터가 ASCII로 인코딩된 표현이 있습니다.

Tar는 더 보편적으로 알려져 있고, 수년에 걸쳐 더욱 다양해졌으며 특정 시스템에서 지원될 가능성이 더 높습니다. Cpio는 여전히 다음과 같은 일부 영역에서 사용되고 있습니다.레드햇 패키지형식(RPM)이지만RPM v5(분명히 모호한) 사용자르cpio 대신.

둘 다 대부분의 Unix 계열 시스템에 존재하지만 tar가 더 일반적입니다. 여기 있습니다데비안 설치 통계:

#rank  name    inst    vote    old  recent  no-files  (maintainer)
   13   tar  189206  172133   3707   13298        68  (Bdale Garbee)
   61  cpio  189028   71664  96346   20920        98  (Anibal Monsalve Salazar)

모드

카피아웃: 아카이브 생성을 위한 것입니다.tar -pc

복사: 아카이브 추출을 위한 것입니다.tar -px

지나가 다: 이것은 기본적으로 위의 두 가지 모두와 유사 tar -pc … |tar -px하지만 단일 명령입니다(따라서 미시적으로 더 빠릅니다). cp -pdrcpio와 (특히) tar 모두 사용자 정의 가능성이 더 높지만 와 유사합니다 . 또한 rsync -a네트워크 연결을 통해 더 일반적으로 사용되기 때문에 사람들이 종종 잊어버리는 것을 고려하십시오.

성능을 비교하지는 않았지만 CPU, 메모리 및 아카이브 크기(압축 후)가 상당히 유사할 것으로 예상됩니다.

관련 정보