강좌
클라우드/리눅스에 관한 강좌입니다.
자격증 분류

리눅스마스터1급 : 백업관련 명령어편 : cpio

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터1: 백업관련 명령어편 : cpio

 

 




cpio는 파일을 아카이브 형태로 복사하는 프로그램이다.

 

 

 

주로 백업을 위하여 테이프 드라이브에 저장을 하거나 커널에 익스텐션 모듈을 인식 하기 위해 사용된다.

 

 

 

그 외에도 여러 가지 기능으로 다양한 용도로도 사용된다.

 

 

 

 

 

예를 들어 cpio는 바이트 스와핑과 다른 형식의 아카이브로 기록할 수 있으며 파이프를 통하여 다른 프로그램으로 데이터를 넘겨줄 수 있다.

 

 

 

특히 파이프를 통하여 다른 프로그램으로 데이터를 넘겨 주는 기능을 사용하여 범용적으로 설치 미디어로 사용된다.

 

 

 

앞서 잠시 언급 한 부분처럼 리눅스 설치시 장치의 드라이브 즉, 커널의 익스텐션 모듈을 인식시키기 위해 사용된다.

 

 

 

 

 

그리고 cpio자체로는 네트워크를 통한 백업을 할 수 없지만 파이프라인을 통하여 rsh를 이용하여 원격의 테이프 드라이브로 백업데이터 전송이 가능하다.

 

 

 

이러한 아카이브 복사 명령어(copy input and output)tar/gzip이용과 백업 매체가 다양화 되면서 많이 이용하지는 않지만 디렉토리 구조를 옮기는 등의 작업시 사용되고 있다.

 

 

 

 

 

하지만 cpio는 디렉토리 구조는 다루지 못하기 때문에 파일 목록이 디렉토리 경로까지 포함한 경로가 표준입력(STDIN)형태로 다루어져야 한다.

 

 

 

 

 

그리고 디스크 디바이스에 접근하여 장치형태가 아닌 아카이브 형태로 복사 저장이 가능하다.

 

 

 

 

 

cpio 사용법

 

 

 

 

 

 

#Copy-Out mode

cpio o [-c] [-d] [-v] < FileName > Output

 

#Copy-In mod

cpio i [-c] [-d] [-E ListName] [-u] [-v] [-V] [Pattern] < Input

 

#Copy-Pass mod

cpio p [-d] [-l] [-u] [-v] [-V] Directory < FileName

 

 

 

 

 

 

 

- Copy-Out mode보존 파일을 만들거나 파이프라인으로 다른 프로그램으로 데이터를 전송할 때 사용하는 방식이다.

 

 

 

이는 파일경로 상태등을 표준입력으로 읽어들여 표준출력으로 복사한다.

 

 

 

cpio o ... 형식을 취한다.

 

 

 

 

 

- Copy-In mode보존파일이나 다른 프로그램에서 파이프라인을 이용하여 데이터를 전송 받을 때 사용하는 방식이다.

 

 

 

이는 표준입력으로 데이터를 읽어들여 실제 파일로 복사한다.

 

 

 

cpio i ... 형식을 취한다.

 

 

 

 

 

- Copy-Pass mode표준 입력으로 받은 파일을 인수에 지정된 디렉토리 경로로 복사한다.

 

 

 

cpio p .... Directory 형식을 취한다.

 

 

 

 

1) 옵션

 

-c : 헤더 정보를 ASCII 양식으로 기록 한다

-d : 필요에 맞게 디렉토리를 작성한다.

 

 

 

o 옵션과 같이 사용할 수 없다.

 

 

 

 

-E : Copy-In mode에서 복사할 파일 목록이 기록 되어 있는 파일을 지정한다.

 

 

 

-o, -p 옵션과 함께 사용할 수 없다.

 

 

 

 

-l : 가능한 경우에 파일들의 사본이 아닌 파일 자체와의 링크를 생성한다.

 

 

 

 

-u : 동일한 이름을 가진 기존 파일 위에 겹쳐 쓰도록 파일을 복사한다.

 

 

 

 

-v : 파일 복사가 진행됨에 따라 파일명을 표시하여 준다.

 

 

 

 

-V : 파일들의 복사가 진행됨에 따라 각 파일에 대한 하나씩의 점을 표시해 사용자가 복사 진행 속도를 알 수 있게 해준다.

 

 

 

 

2) 인수

 

 

listname : 복사할 파일 목록을 포함하는 파일명을 지정한다.

 

 

 

 

filename : 복사할 파일의 이름을 지정한다.

 

 

 

 

directory : 파일이 복사되어 들어가는 디렉토리명을 지정한다.

 

 

 

 

3) 사용예

 

 

cpio로 디렉토리 트리 옮기기

 

 

 

 

 

 

#!/bin/bash

# cpio로 디텍토리 트리를 복사하기

ARGS=2

E_BADARGS=65

if [ $# -ne “$ARGS” ] ; then

echo “사용법 : `basename $0 source destination`”

exit $E_BADARGS

fi

source=$1

destination=$2

find “$source” --depth | cpio admvp “$destination”

# 여기서 사용된 옵션정보를 알려면 man page를 참고하세요.

exit 0

 

 

 

 

 

 

 

rpm 아카이브 풀기

 

 

 

 

 

 

#!/bin/bash

# de-rpm,sh: ‘rpm’ 아카이브 풀기

E_NO_ARGS=65

TEMPFILE=$$.cpio # 유일한 파일명의 임시파일

# $$ 는 스크립트 실행시 PID

if [ -z “$1” ] ; then

echo “사용법 : `basename $0` filename”

exit $E_NO_ARGS

fi

rpm2cpio < $1 > $TEMPFILE # rpm 아카이브를 cpio 아카이브로 변환

cpio --make-directories F $TEMPFILE i # cpio 아카이브 풀기

rm f $TEMPFILE # cpio 아카이브 지우기

exit 0

 

-------------------------------------------------------------------------

filename.cgz 아카이브 복원시

gzip dc filename.cgz | cpio idv

filename.cgz 로 디렉토리를 압축 할 때

find <dir> -print | cpio ovcb | gzip 9 > filename/cgz

 

 

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,854 개
  • 현재 접속자 :  129 명