grawity 와 Paul 이 말한 것에 덧붙여서 :
역사
"오래된 날"에서 cpio (옵션 -c
사용)는 tar 보다 이식성이 뛰어나고 유연하기 때문에 다른 UNIX 파생 파일로 파일을 이동할 때 사용 하는 도구였습니다 . 그러나 타르 이식성 문제는 1980 년대 후반부터 해결 된 것으로 간주 될 수 있습니다.
불행히도 다른 벤더들이 cpio 의 -c
형식을 엉망으로 만들었습니다 ( GNU cpio 의 매뉴얼 페이지 와 옵션 참조 ). 그 당시 tar 는 cpio 보다 이식성이 높아 졌습니다. 다른 UNIX 공급 업체가이를 분류 할 때까지 거의 10 년이 걸렸습니다. 데 GNU 타르 와 GNU의 CPIO 서로 다른 소스에서 테이프 처리했다 모든 관리자를위한 필수 다음 설치를 다시했다 (심지어 요즘 나는 가정).-H
사용자 인터페이스
tar 는 관리자가 시스템에 연결된 테이프 드라이브를 구성하는 테이프 구성 파일을 사용할 수 있습니다. 그런 다음 사용자는 테이프의 정확한 장치 노드를 기억할 필요없이 "테이프 드라이브 1을 사용하겠습니다"라고 말했을 것입니다. 이는 매우 혼란스럽고 다른 UNIX 플랫폼에서도 표준화되지 않았습니다.
그러나 주요 차이점은 다음과 같습니다.
tar 는 자체적으로 디렉토리를 검색 할 수 있으며 명령 행 인수에서 백업 할 파일 또는 디렉토리 목록을 가져옵니다.
cpio 는 파일이나 디렉토리에 지정된 파일 만 아카이브하지만 자체적으로 서브 디렉토리를 재귀 적으로 검색하지는 않습니다. 또한 cpio 는 stdin 에서 아카이브 할 항목 목록을 가져옵니다. 이것이 거의 항상 find 와 함께 사용되는 이유 입니다.
CPIO의 명령은 자주와 비교하면 초보자에 무서운 보이는 타르 :
$ find myfiles -depth -print0 | cpio -ovc0 | gzip -7 > myfiles.cpio.gz
$ tar czvf myfiles.tar.gz myfiles
이것이 대부분의 사람들이 tar 를 사용하여 아카이브 파일을 만드는 주된 이유라고 생각 합니다. 완전한 디렉토리를 묶는 것과 같은 간단한 작업의 경우 사용하기가 더 쉽습니다.
또한 GNU tar 는 -z
아카이브를 즉석에서 GNU zip 으로 압축 할 수있게 하는 옵션 을 제공 하므로 훨씬 쉽게 작업 할 수 있습니다.
반면에 find & cpio로 멋진 작업을 수행 할 수 있습니다 . 사실 그것은 유닉스와 같은 접근법입니다. 거의 모든 사람이 생각할 수있는 도구가 이미있는 경우 디렉토리 트리 검색을 cpio에 포함시키는 이유 : find . 기억해야 할 것은 특정 날짜보다 최신 파일 만 백업하여 파일을 동일한 파일 시스템에있는 파일로 제한하거나 grep -v
특정 파일을 제외 하도록 찾기 출력을 필터링하는 것입니다 .
GNU tar 사람들 은 이전에 cpio 에서만 가능했던 많은 것들을 포함시키기 위해 많은 노력을 기울 였습니다. 실제로 두 도구는 서로 배웠지 만 cpio 만 tar 형식을 읽을 수 있습니다 .
타르 및 출력 처리
당신이 말한 것에 대한 마지막 메모 :
또한 TAR이 STDOUT에서 압축 할 수 없다고 들었습니다. 백업을 위해 ZFS 스냅 샷을 아카이브 / 압축하고 싶습니다. CPIO를 bzip2와 결합하여이 효과를 얻을 수 있는지 궁금합니다.
글쎄, 모든 버전의 tar (GNU 여부에 관계없이)를 파이프에 사용할 수 있습니다. -
아카이브 이름으로 빼기 기호 ( )를 사용하십시오 .
$ tar cvf - myfiles | bzip > myfiles.tar.bz
또한 GNU tar 는 --to-command
여전히 파이프를 선호하지만 포스트 프로세서 명령을 지정하는 옵션 을 제공합니다 . 특정 하드웨어 장치에 쓸 때 사용 중일 수 있습니다.
pax
: P