cpio 기본 추출 명령, 'tar xzvf'에 해당합니까?


12

압축 된 cpio 파일로 Unix 소프트웨어 배포판을 받았습니다. 파일을 추출하는 가장 좋은 명령은 무엇입니까?


당신은 man cpio무엇을 보았습니까?

5
참조 : -i -o -p -t -B -c -C -f -F -H -M -n -v -V -W -b -r -s -S -E -A -O -l- 0 -a -I -L -R -d -m -u-? --extract --create --pass-through --list --block-size = --io-size = --force-local --nonmatching --file = --format = --message = --numeric- uid-gid --quiet --rsh-command = --verbose --dot --warning = --swap --rename --swap-bytes --swap-halfwords --to-stdout --pattern-file =- -only-verify-crc --append --link --absolute-filenames --no-absolute-filenames --null --reset-access-time --dereference --owner = --make-directories --preserve- 수정 시간-보존 유지 소유자
Mark Harrison

답변:


11
gzip -cd foo.cpio.gz | cpio -idmv
  • i : 추출 (입력)
  • d : 디렉토리 생성
  • m : mtime 유지
  • v : 상세

3
mkdir archive
cd archive
zcat ../archive.cpio.gz | cpio -idmv --no-absolute-filenames

이것은 오래된 질문이지만 Google에서는 높게 표시되므로 업데이트 할 수 있다고 생각했습니다. 일반적으로 허용되는 답변에 동의하지만 컴퓨터에서 중요한 시스템 파일을 덮어 쓰지 않으려면 "-절대 파일 이름"을 추가해야합니다. 또한 개인적으로 "gzip -cd"또는 "gunzip -c"보다 "zcat"을 선호합니다.

마지막으로, 장치 노드가 포함 된 루트 파일 시스템을 추출하는 경우 cpio를 루트 (예 : sudo)로 실행해야합니다.



0

예를 들어, / etc / httpd /의 아카이브 된 컨텐츠를 현재 디렉토리로 추출하여 서브 디렉토리 ./etc/httpd/를 작성하십시오.

mkdir restored-etc-httpd
cd restored-etc-httpd    
zcat archive.cpio.gz | cpio -idmv --no-absolute-filenames "*etc/httpd/*"

수락 된 답변과 Matt가 모두 도움이되었지만 세 가지 세부 사항으로 인해 잠시 동안 혼란에 빠졌습니다.

  1. 패턴으로 작동하려면 일치하는 패턴을 인용해야합니다.
  2. 옵션 --no-absolute-filenames은 명령 행에서 패턴 보다 우선 해야 합니다 .
  3. 이 옵션은 /파일 이름 에서 행간 을 제거하므로 일치 패턴도 행간을 생략해야합니다./
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.