cpio 명령어를 활용한 데이터 백업 및 RPM 패키지 파일 추출

cpio 명령어의 기본 동작 모드

cpio는 리눅스 환경에서 아카이브 생성 및 복원 작업에 사용되는 저수준 도구로, 주로 표준 입력과 출력을 통해 데이터 스트림을 처리합니다. 이 명령은 세 가지 주요 동작 모드를 제공합니다:

  • -o (copy-out 모드): 지정된 파일들을 아카이브로 백업합니다.
  • -i (copy-in 모드): 아카이브로부터 파일을 시스템으로 복원합니다.
  • -p (pass-through 모드): 아카이브 없이 직접 파일을 다른 위치로 복사합니다.

주요 옵션 설명

옵션설명
-o아카이브 생성 (백업)
-i아카이브로부터 복원
-v처리 중인 파일 목록을 화면에 출력 (verbose)
-c포터블 형식으로 저장하여 호환성 향상
-B블록 크기를 5120바이트로 설정 (기본값 512)
-d복원 시 필요한 디렉터리 자동 생성
-u모든 파일을 강제 덮어쓰기 (최신 여부와 무관)

예제: find와 함께 사용한 백업 작업

[root@centos2 ~]# find /etc -print | cpio -ovcB > /root/etc_backup.cpio

이 명령은 /etc 디렉터리 내 모든 파일을 찾아 etc_backup.cpio 아카이브에 저장합니다. 옵션 -v를 사용하면 처리 중인 각 파일 경로가 출력되어 진행 상황을 확인할 수 있습니다.

절대 경로와 상대 경로의 차이

절대 경로(/etc)로 백업한 경우, 복원 시에도 시스템의 동일한 위치에 덮어써집니다. 반면 상대 경로(./etc)를 사용하면 현재 작업 디렉터리를 기준으로 복원됩니다. 아래 예시는 상대 경로 기반 백업 및 격리된 환경에서의 복원을 보여줍니다.

[root@centos2 ~]# cd /etc
[root@centos2 etc]# find . -print | cpio -ovcB > /root/etc_relative.cpio

[root@centos2 ~]# mkdir -p /root/recovery_test
[root@centos2 ~]# cd /root/recovery_test
[root@centos2 recovery_test]# cpio -ivdcu < /root/etc_relative.cpio

복원 결과, 원본 /etc의 구조가 현재 디렉터리 내에 그대로 재현됩니다.

파일 시스템 내 직접 복사 (Pass-through Mode)

-p 모드는 아카이브 파일을 생성하지 않고, 파이프를 통해 실시간으로 파일을 복사합니다. 예를 들어 /boot의 내용을 /tmp/test/boot에 복제할 수 있습니다.

[root@centos2 ~]# mkdir /tmp/test
[root@centos2 ~]# find /boot -print | cpio -pd /tmp/test

복사 후 /tmp/test에는 boot 디렉터리가 생성되고, 내부 파일들이 정상적으로 복제된 것을 확인할 수 있습니다.

RPM 패키지 내부 파일 추출

RPM 패키지는 내부적으로 cpio 아카이브 형식을 사용하므로, rpm2cpio 명령어로 변환 후 특정 파일만 선택적으로 추출할 수 있습니다. 일반적인 구문은 다음과 같습니다:

rpm2cpio [패키지_경로] | cpio -idv [추출할_파일_경로]

실제 예제: inittab 파일 추출

먼저 해당 파일이 속한 패키지를 확인합니다.

[root@centos2 ~]# rpm -qf /etc/inittab
initscripts-9.49.47-1.el7.x86_64

CD-ROM에 마운트된 RPM 파일에서 /etc/inittab만 추출해 봅니다.

[root@centos2 ~]# cd /root/extract_area
[root@centos2 extract_area]# rpm2cpio /mnt/cdrom/Packages/initscripts-9.49.47-1.el7.x86_64.rpm | cpio -idv ./etc/inittab

결과적으로 현재 디렉터리에 ./etc/inittab이 생성되며, 소유권과 권한도 원본과 동일하게 유지됩니다. 이 방법은 패키지를 설치하지 않고도 필요한 구성 파일이나 스크립트를 미리 검토할 때 유용합니다.

태그: cpio rpm2cpio 리눅스 백업 RPM 패키지 추출 find cpio 연동

6월 24일 22:44에 게시됨