리눅스에서 백업하기 – tar와 테이프를 이용한 백업

정기적으로 백업을 수행하는 것은 시스템의 안전을 위해 절대 양보할 수 없는 부분이다. 아무리 안정적인 시스템이라도 언제 위기가 닥칠 지는 아무도 모르는 일인 것이다. 가볍게는 단순한 오류에서부터 침입자의 공격, 심지어는 시스템의 도난까지, 우리가 상상할 수 있는 모든 사고는 운이 나쁘면 얼마든지 일어날 수 있는 일이다. 게다가 사람의 실수로 중요한 파일을 잘못 수정하거나 삭제하는 경우는 비일비재할 것이다. 이럴 때 정기적으로 백업을 해 두었다면 파일 손실의 가능성을 줄이고 복구 가능성을 높일 수 있다.

 

백업을 실행하는 가장 안전한 방법은 테이프, CD-ROM 혹은 원격지 서버에 백업하여 이 시스템에서 백업한 데이터를 분리하여 보관하는 것이다. 그렇지 않다면 최소한 백업을 마치면 백업용 하드디스크의 마운트를 풀어놓고, 백업할 때에만 다시 마운트 하여 사용해야 할 것이다. 물론 이와 같은 작업은 cron을 사용하여 편리하게 진행할 수 있다. 자세한 내용은 셸 프로그래밍을 참고하자.

 

리눅스에는 백업 작업을 위한 많은 프로그램이 있다. dd나 dump, tar, cpio 등을 사용한 방법은 가장 흔한 것들이다. 그 외에도 다양한 텍스트 혹은 GUI 기반의 다양한 유틸리티를 사용하여 편리하게 백업 작업을 할 수 있다. 이와 같은 백업 도구를 사용하기 위해서는 다음과 같은 점을 고려한다.

 

* 이식성이 좋은가? 이 시스템에서 백업한 내용을 조금 다른 환경에서 복구할 수 있는가? 다른 유닉스 시스템이나 다른 종류의 배포판을 사용하는 시스템에서 이 백업 내용을 무리 없이 복구하여 사용할 수 있는가?

* 사용하기 편리한가? 기능이 쉽고 직관적이라 실수를 줄일 수 있는가?

* 원격 백업과 자동 백업을 지원하는가?

 

또한 가격과 안정성, 저장 용량, 전송 속도 등을 감안하여 다양한 매체를 사용할 수 있을 것이다. 일단 여러가지 툴이 있겠지만 가장 기본적인 tar 사용법을 간단히 살펴본다.

 

tar은 유닉스의 전통적인 압축 명령이었다. tar는 그 이름을 보면 알 수 있겠지만 테이프에 저장하기 위해 파일을 묶는 것에서 유래했다. 이런 tar와 테이프를 이용한 백업은 아주 전통적인 방식으로, 현재에는 많이 사용하지 않지만 알아 볼 만한 부분이라고 생각한다.

 

tar의 사용법은 이미 앞에서 다루었으므로 자세히 설명하지 않겠다. 이 부분에서는 테이프를 사용하는 방법을 함께 알아보겠다.

 

테이프 드라이브를 조작하는 명령은 mt라는 명령이 있고 이는 mt-st라는 패키지에 들어 있다. 이 명령은 테이프 드라이브의 테이프를 파일하나 앞/뒤로 이동하거나 테이프의 맨 뒤와 맨 앞으로 이동하는 명령을 줄 수 있다.

 

테이프 드라이브는 환경변수 TAPE로 정의하거나 옵션으로 -f 디바이스 이름 또는 -t 디바이스 이름으로 지정한다.

 

테이프의 끝으로 갈 때에는 fsf 또는 fsfm으로 지정한다. fsfm을 사용하면 어느 정도 감을 것인지를 지정할 수 있다. 처음으로 갈 때에는 bsf와 bsfm을 사용하며, 역시 bsfm을 사용하면 어느 정도 감을 것인지 지정할 수 있다. 테이프를 끝으로 보내거나 처음으로 이동하려고 할 때는 eod 와 rewind를 사용한다. 테이프의 사용을 끝내고 드라이브에서 빼내려고 할 때에는 offline을 사용하고 테이프의 처음으로 감은 뒤에 빼내려면 rewoffl을 사용한다. 더욱 많은 옵션은 man mt 명령으로 확인해 볼 수 있다.

 

tar 명령을 사용해서 테이프로 백업을 하려면 압축파일의 위치를 테이프 드라이브를 위한 디바이스로 지정하면 된다. 예를 들어 /usr/local/ 드라이브를 백업할 때에는 다음과 같이 입력한다.

 

# tar cvf /dev/tape /usr/local

 

tar 명령을 사용해서 백업한 파일을 복구할 때에는 이렇게 한다.

 

# tar xvf /dev/tape

 

이 명령을 실행하면 테이프에 압축된 모든 파일의 압축을 해제할 것이다. 테이프에 압축되어 백업한 파일의 목록을 확인하려고 한다면 tar tvf /dev/tape라고 하면 된다.

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.