, , , ,
2017. 2. 15. 16:48

@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
리눅스 백업하기  (0) 2017.02.15
ttylinux live USB 만들기  (0) 2017.02.15
DHCP Client 설치  (0) 2017.01.24
Git Pull All Repository  (0) 2017.01.19

+ Recent posts