본문 바로가기

Linux

리눅스 백업하기

@markdown


# 리눅스 백업하기


실수하면 시스템을 밀어버려야 할 정도로 큰 작업을 하기 전에는 반드시 현재 시스템을 백업할 필요가 있다.

현재 상태의 리눅스를 백업하기 위한 방법은 여럿 있는데, 대표적으로 dd, tar, clonezilla 같은 유티리리티가 있다.

_


## 각 방식 비교


### dd


[dd](http://man7.org/linux/man-pages/man1/dd.1.html)는 가장 확실하고, 가장 비효율적인 방식이다. 그냥 다짜고짜 디스크를 복제하는 방식이기 때문에, 디스크의 용량이 클수록 엄청나게 비효율적이다. 결과로 나온 이미지 파일도 무식하게 큰건 두말할것 없다. 결과로 나오는 이미지의 크기는 `gzip`에 파이프라이닝을 해서 압축하면 극적으로 줄일 수 있으나, 여전히 모든 디스크를 살펴야 하기에 굉장히 오랜 시간이 걸리는 것은 피할 방법이 없다.



### tar


[tar](https://linux.die.net/man/1/tar)는 `dd`보다 훨씬 효율적으로 백업을 수행할 수 있다. 디스크 이미지 자체를 백업하는 dd와는 달리 tar는 디스크의 **파일**에 관심이 있다. 다시 말해 tar를 사용해 `/`를 압축하는게 백업이라는 것이다. 그러나 아무래도 명령이 복잡하고, 런타임에만 사용된느 정보를 담을 디렉토리를 사용자가 직접 제외시켜주어야 한다는 점이 귀찮다. 또 디렉토리를 사용자가 잘못 제외시켰을 경우, 그 결과는.... 참담할 것이다.

_

그럼에도 불구하고 어떤 환경, 어떤 리눅스에서도 사용 가능하다는 점, dd보다 빠르고 용량 절양하기에, tar를 사용한 방법은 충분한 가치가 있다.



### clonezilla



[clonezilla](http://clonezilla.org/)는 리눅스 이미지 백업의 끝판왕이다. 이 어플리케이션은 바로 이 작업을 위해서 태어났기 때문에 믿을 수 있고 가장 효율적이며, 덤으로 LiveUSB도 제공한다.

다만 이 방식의 경우 serial을 사용한 터미널 접속의 경우 화면 출력에 문제가 생겨서 프리징이 되어버리는 경우가 종종 있다. 이럴 경우에는 clonezilla는 할수 있는게 아무것도 없다.



## tar를 사용한 리눅스 백업


**어떤 환경, 어떤 리눅스에서도 사용 가능하다는 점** 때문에 tar를 사용한 방법을 정리한다.


### 백업

`sudo tar cvpzf /tmp/backup.tar.gz --exclude=/proc/* --exclude=/lost+found/* --exclude=/media/* --exclude=/mnt/* --exclude=/sys/* /`

_

`df -h` 명령을 사용해 자신의 리눅스에 맞게 추가적인 런타임 디렉토리 제외는 필수적이다. 예를 들어 우분투의 경우 `/run/*`디렉토리 또한 제외되어야 한다.



### 복원

복원을 할 때에는 안전성을 위해 [LiveUSB를 만들어서](http://makerj.tistory.com/306) 부팅하는 것을 강력 추천한다.

1. 원래 사용하던 디스크를 마운트 시키고

2. 마운트 된 원래 디스크에 들어가 `rm -rf *`로 모든 디렉토리와 파일을 날려버리고

3. `sudo tar xvpzf backup.tar.gz -C 타겟경로` 를 입력해 복원하자

'Linux' 카테고리의 다른 글

Linux Network Interface Name  (0) 2017.03.26
터미널에서 헥스덤프 만들기  (0) 2017.02.26
ttylinux live USB 만들기  (0) 2017.02.15
DHCP Client 설치  (0) 2017.01.24
Git Pull All Repository  (0) 2017.01.19