개요
리눅스 커널 initramfs 및 백업 시스템에서 널리 쓰이는 cpio 아카이브 도구의 핵심 사용법을 실습과 함께 알아봅니다. copy-out(-o), copy-in(-i), copy-pass(-p)의 세 가지 기본 모드와 주요 옵션별 실행 결과를 통해 실무 백업 및 복구 작업을 손쉽게 마스터할 수 있습니다.
1. cpio 패키지 설치 및 아카이브 생성(copy-out) 기초
Ubuntu 환경에서 cpio 명령어 실습을 진행하기 위해 패키지 목록을 갱신하고 cpio 패키지를 설치합니다.

아카이브 생성 실습에 사용할 디렉터리를 생성하고 이동한 뒤 테스트용 텍스트 파일들을 준비합니다.

cpio 명령어는 파일 목록을 표준 입력으로 받아 아카이브 파일로 묶거나 기존 아카이브에서 파일을 추출합니다.
현재 디렉터리의 파일 목록을 파이프라인으로 전달받아 단일 아카이브 파일(archive.cpio)로 묶어 생성합니다.
⚙️ [주요 옵션]
-o (--create) : 파일 목록을 입력받아 아카이브를 생성하는 copy-out 모드로 동작합니다.-i (--extract) : 아카이브 파일에서 내용을 복원하거나 추출하는 copy-in 모드로 동작합니다.-p (--pass-through) : 아카이브 파일을 거치지 않고 디렉터리 트리 간에 파일을 직접 복사하는 copy-pass 모드로 동작합니다.-v (--verbose) : 처리 중인 파일 목록을 화면에 상세하게 출력합니다.-t (--list) : 아카이브를 풀지 않고 내부의 파일 목록만 확인합니다.-d (--make-directories) : 복원 시 필요한 디렉터리가 없으면 자동으로 생성합니다.-u (--unconditional) : 기존에 동일한 파일이 존재하더라도 덮어씁니다.-H (--format) : 아카이브의 포맷(예: crc, newc, tar 등)을 명시적으로 지정합니다.

생성된 archive.cpio 아카이브 파일의 상세 정보와 용량을 사람이 읽기 쉬운 단위로 확인합니다.

2. 아카이브 내용 조회 및 복원(copy-in) 실무
생성된 archive.cpio 아카이브를 실제로 풀지 않고 내부 파일 목록과 권한 정보를 확인하기 위해 -t와 -v 옵션을 조합하여 조회합니다.
표준 입력을 통해 아카이브 내용을 전달받아 압축 해제 전 보관된 항목들을 안전하게 점검할 수 있습니다.

아카이브 복원 실습을 진행하기 위해 복원 전용 디렉터리를 생성하고 해당 위치로 이동합니다.

archive.cpio 아카이브에서 원본 파일을 현재 디렉터리로 추출하여 복원하기 위해 cpio -idv 명령어를 실행합니다.
필요한 하위 디렉터리를 자동 생성하는 -d 옵션과 처리 과정을 표시하는 -v 옵션을 함께 사용하여 안전하게 복원합니다.

아카이브 내부 파일들이 지정된 디렉터리에 정상적으로 복원되었는지 확인하기 위해 전체 파일 목록과 상세 정보를 조회합니다.

3. 디렉터리 트리 고속 복사(copy-pass) 활용
디렉터리 트리 복사 실습을 위해 소스 디렉터리 내에 하위 디렉터리를 생성하고 테스트용 텍스트 파일을 추가합니다.

복사된 파일과 디렉터리 구조를 저장할 대상 디렉터리를 생성합니다.

소스 디렉터리로 이동한 뒤 find 명령어로 탐색한 파일 목록을 파이프라인으로 전달하여, 아카이브 파일을 거치지 않고 대상 디렉터리로 직접 복사하는 copy-pass 모드(-p)를 실행합니다.
필요한 디렉터리를 자동 생성하는 -d, 원본 파일 수정 시간을 유지하는 -m, 처리 과정을 출력하는 -v 옵션을 함께 지정하여 디렉터리 구조를 온전하게 복제합니다.

대상 디렉터리에 원본의 하위 디렉터리 구조와 파일들이 빠짐없이 복사되었는지 확인하기 위해 재귀적으로 파일 목록을 조회합니다.

4. 실무 표준 형식(SVR4/CRC) 아카이브 생성 및 gzip 연동
소스 디렉터리로 이동한 뒤 find 명령어로 추출한 파일 목록을 파이프라인으로 전달하여 리눅스 부팅 이미지 표준 포맷인 newc 형식의 아카이브를 생성하고, gzip 최고 압축률(-9)을 적용해 압축 아카이브 파일(initramfs_sample.cpio.gz)을 생성합니다.

생성된 initramfs_sample.cpio.gz 파일이 gzip으로 정상 압축된 바이너리 데이터 형식인지 확인하기 위해 file 명령어로 파일 유형을 조회합니다.

압축 아카이브 복원 실습을 진행하기 위해 전용 디렉터리를 생성하고 해당 위치로 이동합니다.

압축을 해제하며 표준 출력으로 데이터를 전달하는 zcat 명령어와 cpio 복원 모드(-idv)를 파이프라인으로 연결하여, 아카이브 내부의 파일들을 현재 디렉터리에 일괄 복원합니다.

압축 해제 및 복원 작업이 완료된 후 현재 디렉터리에 원본 파일 및 숨김 파일들이 빠짐없이 정상 복원되었는지 확인하기 위해 전체 파일 상세 목록을 조회합니다.

지금까지 Ubuntu 환경에서 cpio 명령어를 활용해 아카이브를 생성하고 복원하는 실무 핵심 옵션들을 간단하게 정리해보았습니다.
다양한 옵션과 파이프라인 활용법을 익혀 시스템 백업과 데이터 복구 작업을 한층 더 효율적으로 진행해보시기 바랍니다.