메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

아카이버의 이해

한빛미디어

|

2002-06-04

|

by HANBIT

11,181

저자: 드루 라빈, 역 신동섭

유틸리티들을 백업하고 아카이브하는것에 대해 살펴보자.

필자가 유닉스를 처음 사용할 때와 비슷한 상황이라면 그 당시 필자는 tar, cpio, dump 같은 용어들이 두려웠었다. 그리고 그들 각각의 맨 페이지를 빠르게 훑어보는 것만으로는 두려움이 줄어들지 않았다.

그래서 필자는 이러한 유틸리티들이 어떻게 동작하는지 배울 필요가 없다고 생각했다. 따지고 보면 집에 있는 FreeBSD 시스템에 테잎 드라이버조차도 가지고 있지 않았다. 그리고 필자는 백업이 진짜로 중요하다는 사실을 알았다. 그리고 필요로 하는 만큼의 필요한 파일들을 복사할 수 있었다.

나는 파일을 복사하는 것이 정말 어려운 백업 작업을 하는 것이라는 사실을 배웠고 일반적으로 해야 하는 모든 작업을 백업하는 것이 특별히 도움이 되지 않는다는 사실도 알았다. 본 기사에서 필자는는 아카이브의 개념과 아카이브 유틸리티들 사이의 차이에 대해 소개하고자 한다. 이 이후의 기사에서는 아카이브 유틸리티 각각의 사용법을 실례로 보여줄 것이다.

필자는 현재 "dru"유저로 로긴되어 있다. 나의 홈 디렉토리로 cd를 실행하고 그 내용들을 살펴볼 것이다:
cd
ls
.             .xinitrc            perlscripts
..            articles            this
.cshrc        ip.c                tricks
.history      jpegs               unix
.mailrc       lynx_bookmarks.html
.ssh2         pdfs
perlscripts 디렉토리의 내용을 백업하고 싶은 다른 디렉토리로 백업하려고 한다. 이를 시도한 것은 다음과 같다.
cp perlscripts backup
cp: perlscripts/ is a directory (not copied).
복사가 실패했다. perlscripts가 디렉토리이기 때문이다. 그렇지만 r 또는 순환 스위치가 생각이 나면 아래와 같이 해보자.
cp -r perlscripts backup
복사 명령이 성공했다. Backup이라는 이름을 가진 새로운 디렉토리가 생성되고 perlscripts 내용이 Backup으로 복사될 것이다.

너무 쉬운 것 같아 보이지만 이것이 백업을 하는 최선의 방법이 아닐 수 도 있다. 초보자들을 위해 원래 디렉토리의 긴 리스트와 새로운 백업 디렉토리를 살펴보자.
ls -l perlscripts
total 6
drwxr-xr-x   2 dru  wheel   512 Oct  4 07:29 .
drwxr-xr-x  22 dru  wheel  4096 Mar 24 07:07 ..
-rwxr-xr-x   1 dru  wheel   801 Feb 16 12:32 time.pl

ls -l backup
total 3
drwxr-xr-x  3 dru  wheel  512 Mar 24 08:49 .
drwxr-xr-x  8 dru  wheel  512 Mar 24 08:49 ..
-rwxr-xr-x  1 dru  wheel  801 Mar 24 08:49 time.pl
time.pl 파일의 최근 수정 시간이 2월에 백업된 실제 수정된 시간이 아니라 재귀 복사를 실행한 시간으로 변경되었다는 것을 눈치챘을 것이다.

만약 자신의 홈 디렉토리에 있는 일부 파일들 중 몇몇 개만 백업하고 싶다면 이는 여러분에게 큰 일 일수도 있고 아닐 수도 있다. 그렇지만 이것이 FreeBSD시스템의 큰 부분을 위한 백업 솔루션이었을 경우 상당한 혼란을 야기할 수 있다.

파일을 백업하기 위해 cp -r을 사용할 때 고려해야 할 기타사항이 있다. 만약 몇몇 유저들만을 위한 파일을 백업하고 싶다면 어떻게 해야 할까? 필자는 아마도 수퍼유저로 백업 할 것이다. 필자가 그 복사를 반복할 경우 어떤 일이 발생하는지 살펴보도록 하자. 이번에는 수퍼유저 계정을 사용한다.
rm -r backup
su
Password:
cp -r perlscripts backup

ls -l backup
total 3
drwxr-xr-x  3 root  wheel  512 Mar 24 09:20 ./
drwxr-xr-x  8 dru   wheel  512 Mar 24 09:20 ../
-rwxr-xr-x  1 root  wheel  801 Mar 24 09:20 time.pl
백업 디렉토리와 time.pl 파일이 root 케이스에 복사를 한 사용자 소유로 되어있음을 알게 된다. 이와 같은 상황은 원래 권한을 보존해주는 p 스위치를 포함해야 하는 것을 생각해 냈더라면 피할 수 있는 상황이다.

cp -r을 사용하여 슈퍼유저로 각 유저의 홈 디렉토리를 백업했다는 악몽은 상상만으로도 정말 끔찍하다. 필자는 가능한 한 재저장 해야 할 모든 파일들의 권한과 소유권을 재조정해야 한다. 게다가 원래 파일 수정 시간도 여전히 알 수 없는 상태이다.

만약 이것이 그렇게 큰 문제가 아니라고 해도 cp -r을 사용하여 홈 디렉토리 전체를 백업하는 것을 생각해 보아라. 비록 이것이 충분히 논리적이라고 하더라도 이 방법은 사용하지 말기를 권한다.
cd
cp -r . backup
만약 이렇게 할 경우 너무 긴 이름과 단어 백업의 몇몇 screen worth를 포함하는 에러 메시지를 알기 전에 내 하드 드라이브는 오랜 시간동안 심하게 손상받을 것이다. 만약 여러분의 목적이 백업하고 있는 소스의 서브 디렉토리이거나 같은 디렉토리에서 발생한다면 cp 명령어가 무한루프로 빠지기 때문이다. 이것은 디스크공간이 다할 때까지 backup을 backup/backup으로 다시 backup/backup을 backup/backup/backup으로 계속해서 복사할 것이다.

그렇다면 이럴 경우 완전한 홈 디렉토리를 어떻게 백업해야 하는가? 이것을 성취할 수 있는 더 쉬운 방법은 탐탁치 않은 느낌을 받기 시작하기 때문에 점점 더 조금씩 더 많은 일을 만들기 시작할 것이다. 이것은 아래와 같이 동작한다.
mkdir backup
cp -r .cshrc .history .mailrc .ssh2 .xinitrc articles file ip.c jpegs 
lynx_bookmarks.html pdfs perlscripts tricks unix backup/
그러나 이 작업은 홈 디렉토리에서 계속 늘어가는 파일 수처럼 불편하고 시간만 소비하게 될 것이다. 필자는 홈 디렉토리에 있는 모든 디렉토리와 파일들을 나타내는 와일드카드 표현으로 좀 더 괜찮은 생각을 할 수 있었다. 그러나 이것 역시 힘든 방법이다.
Unix Backup and Recovery

참고 도서

Unix Backup and Recovery
W. Curtis Preston


이 방법은 아카이브를 할 수 있도록 디자인된 유틸리티와 아카이브 개념이 어디에 있느냐는 것이다. 그러면 정확히 아카이브란 무엇인가? 한 번 짚어보고 넘어갈 필요가 있다. 아카이브는 나중에 다시 복구될 수 있도록 하기위해 컨텐츠, 권한, 타임스탬프, 소유자, 그룹, 본래 파일의 패스명 등을 보존하는 구조로 된 다른 파일들의 모임을 포함하는 파일이다. 다시 말해 아카이브 유틸리티는 하나의 디렉토리 안에 있는 모든 파일과 하부 디렉토리들을 복사할 수 있으며 모든 권한 또는 변경정보를 잃어버리지 않고 원래 디렉토리 구조로 재생할 수 있다.

이는 일단 파일시스템 구조를 읽는 방법이나 파일시스템이 무엇인가를 모르는 디바이스들이 있다는 사실을 알고 나면 더 흥미로울 것이다. 우리는 파일시스템 구조에 속해있는 여러 파일들에 대해 생각하곤 한다. 예를 들어 time.pl 파일은 perlscripts 디렉토리에 있는 파일이다. 다시 perlscripts 디렉토리는 dru 디렉토리에 있으며 dru 디렉토리는 /usr 파일시스템의 서브디렉토리인 홈 디렉토리 안에 있다.
/usr/home/dru/perlscripts/time.pl
파일시스템을 가질 수 있기 때문에 파일시스템 계층을 이해할 수 있는 모든 디바이스는 블록 디바이스로 알려져있다. 여러분의 FreeBSD 운영체제를 가지고 있는 하드 디바이스는 블록 디바이스의 한 예이다.

그러나 파일시스템 계층이 무엇인지를 이해하지 못하는 디바이스들도 많이 있다. 테잎 디바이스가 어떻게 동작하는지를 생각해 보아라. 여러분이 데이터를 테잎에 기록하면 이때 여러분이 작성한 문자들은 간단하게 순서대로 그 테잎에 전달된다. 파일시스템이 없거나 perlscipts 디렉토리안에 파일 time.pl이 속한다는 개념도 없다. 이런 디바이스들은 캐릭터 디바이스로 알려져 있으며 종종 "raw"라고 불린다.

아카이브 유틸리티는 블록이나 캐릭터 디바이스를 백업할 수 있다. 아카이브 파일 자체는 원래 파일 계층을 재생성하는데 필요한 정보를 모두 가지고 있다. 그리고 그러한 정보는 여러분의 데이터와 같이 저장된다. 이것은 여러분이 테잎 드라이브와 같은 캐릭터 디바이스로 자신의 데이터를 백업할 수 있음을 의미한다. 그리고 하드 드라이브 같은 블록 디바이스로 후에 여러분의 데이터를 재저장할 수 있다.

FreeBSD 시스템에는 몇 가지 아카이브 유틸리티가 있다. 필자는 tar, cpio, pax, dd, dump/restore를 살펴볼 것이다. What is 명령이 이러한 유틸리티 각각에 대해 어떤 것을 말해주고 있는지 살펴보자.
whatis tar cpio pax dd dump
tar(1)              - tape archiver; manipulate tar archive files
cpio(1)             - copy files to and from archives
pax(1)              - read and write file archives and copy 
                      directory hierarchies
dd(1)               - convert and copy a file
dump(8), rdump(8)   - filesystem backup
tar, cpio, pax는 아카이브 되었다는 사실을 알아야 한다. tar는 완전한 디렉토리 구조를 백업하고자 할 때 제일 사용하기 편하다. 반대로 cpio 유틸리티는 특정파일을 선택하여 백업하고자 할 때 유용하다. 그리고 pax는 추가적인 기능 일부가 빠진 이들 명령의 조합이다.

dd 유틸리티는 흥미롭다. 이 유틸리티로 백업하는 것과 똑같이 파일들을 변경할 수 있기 때문이다. 우리는 PC에서 SPARC으로 백업할 때 별로 가치가 없다고 볼 수도 있겠지만 말이다. 마지막으로 dump 명령은 단순한 디렉토리 구조가 아니라 완전한 파일시스템 전체를 백업하도록 설계되었다.

이들 명령 대부분은 SCSI테잎 드라이버까지 백업할 것이지만 단 하나의 스위치로 이 기본사항을 변경할 수 있다는 것을 당연하게 생각할 것이다. 필자는 이러한 명령 각각을 사용하기 전에 몇 가지 추가 아이템에 대해 논하고 싶다. 테잎 드라이브가 없다고 하더라도 FreeBSC 시스템이 테잎 디바이스에 사용하는 명명규약을 이해하는 것이 유익하기 때문이다.

다른 유닉스 시스템처럼 FreeBSD도 /dev 디렉토리의 디바이스에 대한 정보를 저장한다. 이 디렉토리의 첫번째 몇 파일들을 길게 목록화하자.
ls -l /dev | head
total 62
drwxr-xr-x  3 root wheel       14336 Mar 17 19:31 .
drwxr-xr-x 18 root wheel         512 Jan 31 19:17 ..
-r-xr-xr-x  1 root wheel       43405 Sep 18 2001 MAKEDEV
-r-xr-xr-x  1 root wheel        2064 Sep 18 2001 MAKEDEV.local
crw-r-----  2 root operator 117,   0 Sep 22 2001 acd0a
crw-r-----  2 root operator 117,   2 Sep 22 2001 acd0c
crw-r-----  2 root operator 117,   8 Sep 22 2001 acd1a
crw-r-----  2 root operator 117,  10 Sep 22 2001 acd1c
crw-r-----  2 root operator 116, 0x00010002 Sep 22  2001 ad0
위에서 보는 긴 리스트 중 다섯번째 필드에 차이가 있다는 것을 발견할 수 있어야 한다. 첫번째 몇 파일은 바이트로 크기를 표시한다. 예를 들어 파일 MAKEDEV는 43405바이트이다. 대신 마지막 다섯 파일은 "117"이나 "116"을 가지고 있다. 이 파일들 또한 캐릭터 디바이스이다. 파일모드가 c임을 볼 수 있다(권한 앞에 있으므로). 디렉토리들은 d 파일모드를 가지고 있으며 보통 파일들은 - 파일모드를 가진다.

/dev 디렉토리에 있는 디바이스 파일은 각 디바이스 파일이 표현하는 디바이스를 위한 커널에 포함되어 있는 드라이버를 가리키는 포인터이다. 이것은 이 파일들이 비어있으며 단지 포인터에 불과하다는 것을 의미한다. 일반적으로 ls -l의 필드 크기에 있는 값은 "major_number,minor_number"를 표현한다. 예를 들어 디바이스 파일 acd1c는 117 이라는 메이저 수를 가지며 마이너 수는 가지고 있지 않다. 메이저 수는 어느 드라이버가 사용되고 있는지를 알려주며 마이너 수는 디바이스에 추가되는 모든 정보를 드라이버에 제공한다.

이 디렉토리에 있는 MAKEDEV파일은 디바이스 파일들을 만드는데 사용되는 셸 스크립트이다. 만약 어떤 디바이스 파일이 관련되어 있는지 알고싶다면 이 파일의 시작부분에 있는 주석을 보면된다. 예를 들어 어느 디바이스가 테잎 디바이스에 관련되는지를 보려면 워드타입을 위해 이 파일들을 검색하면 된다.
more /dev/MAKEDEV
/tape
그리고 아래 테잎 드라이브들이 FreeBSD 시스템에서 지원된다는 사실을 알게 될 것이다.
sa        SCSI tape driver  (formerly called st)
wt        QIC-02 or QIC-36 3M cartridge tape
지원되는 서드 타입도 있다.
wst        ATAPI tape drive on IDE bus
만약 이들 테잎 디바이스들 중에서 하나를 가진다면 이들 각각은 여러분이 읽을 수 있는 연관된 man 페이지를 가진다. 만약 /dev 디렉토리에서 이들 디바이스를 찾는다면 이들은 일반적으로 몇몇 추가된 문자들과 같이 온다.
ls /dev | grep wt
nrwt0
nrwt0b
nrwt0c
nrwt0d
rwt0
rwt0b
rwt0c
rwt0d
대부분의 테잎 디바이스들은 그것들이 "raw" 또는 캐릭터 디바이스라는 것을 알리기 위해 문자 "r"을 사용할 것이다. 디폴트로 테잎 디바이스로 백업을 하면 되감기를 할 것이다. 이때 백업은 만약 여러분이 그 테잎에 다른 백업을 할 경우 덮어 쓰여질 것이다라는 것을 의미한다. 이러한 행위를 방지하기 위해 되감기를 지원하지 않도록 하려면 문자 "n"을 사용하는 디바이스를 사용하면 된다.

우연하게도 디바이스는 "e"도 가지고 있을 것이다. 이것은 일단 백업이 완료되고 나면 그 테잎을 꺼내준다는 것을 의미한다.

필자가 본 기사에서 언급하고 싶은 마지막 사항은 절대 경로명과 상대 경로명과의 차이이다. 아카이브 유틸리티는 파일을 재생성 할 때 파일의 경로명을 저장하고 그 경로명을 사용하기 때문에 두 경로명 사이의 차이를 알아두는 것도 중요하다.

만약 경로명이 /로 시작한다면 이는 절대 경로명이라는 것을 의미한다. 이것은 일반적으로 여러분이 원래 디렉토리로 그 파일을 재저장 하는 데에만 사용되기 때문에 백업 하는데 있어 좋지않다. 이는 여러분이 백업한 후 그 파일에 만들어진 모든 변화사항을 잃어버릴 수도 있다는 것을 의미한다. 여러분이 그 파일을 재저장할 때 다른 디렉토리에 그 파일이 있다고 하더라도 원래 위치로 파일을 재저장 할 수 있다.

경로명이 ./이나 /없이 시작한다면 이것은 상대적 경로명을 말한다. 이것은 일반적으로 그 파일이 어디에나 재저장될 수 있기 때문에 백업할 때 유용하게 사용될 수 있다. 간단히 그 파일을 재저장할 디렉토리로 이동하고 아카이버가 그 파일을 재저장하는 것으로 경로명에 현재 디렉토리를 추가해 주면 된다.

드루 라빈(Dru Lavigne)는 캐나다 온타리오주 킹스톤에 있는 공과 전문대학교에서 네트워크를 가르치고 있다. 하나의 테스트 머신에서 얼마나 많은 운영체제를 멀티 무팅할 수 있는지를 증명하는데 강한 집념을 가지고 있는 것으로 유명하다.
TAG :
댓글 입력
자료실

최근 본 상품0