cpio 아카이브에서 개별 파일을 추출하는 방법은 무엇입니까?

cpio 아카이브에서 개별 파일을 추출하는 방법은 무엇입니까?

많은 파일이 포함된 cpio 아카이브가 있는데 파일 전체가 아닌 하나의 파일만 추출하면 됩니다. tar그냥 사용할 수도 있지만 작동 tar -xf archive.tar path/to/file하지 않습니다 cpio.

cpio -i < archive.cpio path/to/file
bash: path/to/file: No such file or directory

아카이브에서 개별 파일을 추출하는 방법을 아는 사람이 있습니까 cpio?

답변1

홈 디렉토리( ) 가 존재하지 않는 경우 이 -d옵션을 사용하여 cpio홈 디렉토리( )를 생성 해야 합니다.path/to

cpio -id < archive.cpio path/to/file

또한 bsdtar(FreeBSD의 기존 방식 tar) 압축 여부에 관계없이 cpio 아카이브를 추출하는 방법을 알고 있습니다.

답변2

파이프라인에서 파일을 즉시 사용하려면 건너뛰고 -d추가 하면 됩니다.--to--stdout

다음은 과도한 예입니다. initramfs cpio에서 실행 파일의 MD5SUM을 확인하세요.

$ objdump -sj '.init.ramfs' ./usr/initramfs_data.o | \
    tail -n +5 | \
    cut -b1-44 | \
    xxd -r | \
    gunzip | \
    cpio --to-stdout -i usr/bin/mount 2>/dev/null | \
    md5sum 
bffe60496ce15be471e7cfc04c14fac5  -
  • 16 진수 tail덤프 전 라인 종료objdump
  • cut16진수 덤프의 ASCII 부분 제거
  • xxd -run-hexdumps(16진수를 2진수로)

관련 정보