컴퓨터

SSH를 이용한 간단한 계정 백업/복원

by 창환 posted Aug 14, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

보안 텔넷(SSH)을 이용하면 계정에 있는 파일을 쉽게 백업하고 복구할 수 있습니다. 이 방법은 계정을 이전할 때에나 계정 내의 자료가 손상되어 복구할 필요가 있을 때 유용하게 쓸 수 있습니다.


1) 계정 백업 방법


보안 텔넷으로 계정에 접속한 다음, 명령 프롬프트가 나타나면 다음 명령을 입력합니다.

계정 전체를 백업하려면 최상위 경로에서 작업해야합니다.


tar cvfpz (저장할 파일 이름).tar.gz (백업할 디렉토리)



(예) tar cvfpz backup090814.tar.gz html


html 디렉토리를 backup090814.tar.gz 파일로 저장합니다.


여가에서 백업할 디렉토리의 이름은 보통 'hml'이나 'public_html'입니다.

사용하고 있는 계정에 맞추어 적당히 입력하면 됩니다. 


서버쪽에서 백업 작업이 끝나면 생성된 백업 파일을 FTP를 통해 내려받으면 됩니다.


계정을 백업할 때에는 주의해야할 부분이 하나 있습니다. 몇몇 경우에는 이 명령어를 입력하더라도 일부 파일이 백업되지 않는 경우가 있습니다. 파일이나 디렉토리의 권한 설정 때문에 생기는 문제인데, 이 때에는 호스팅 업체에 백업을 의뢰하거나 권한 설정 문제가 생기지 않도록 스크립트(php 같은 스크립트 언어를 이용)를 만들어 백업해야 합니다.


계정을 백업할 때 파일이나 디렉토리가 정상적으로 백업되었는지 확인하기 위해서는 작업 기록 파일(로그 파일)을 만들어두면 됩니다. 위의 방법으로 계정을 백업할 때 로그파일을 만들려면, 아래와 같이 입력하면 됩니다.


tar cvfpz (저장할 파일 이름).tar.gz (백업할 디렉토리) > (기록 파일 이름)



(예) tar cvfpz backup090814.tar.gz html > filelist.log


html 디렉토리를 backup090814.tar.gz 파일로 저장하고 작업 내역을 filelist.log 파일로 저장합니다.


이 때 만들어진 기록 파일은 메모장 같은 텍스트 파일 편집기로 내용을 볼 수 있습니다. 만약에 일부 파일을 권한이나 다른 문제로 인해 백업하지 못했다면 기록 파일 내에 어떠한 이유로 파일을 처리하지 못했다는 문구가 나옵니다. 안전한 백업을 위해서는 기록 파일을 만들어 백업 후에 작업이 정상적으로 이루어졌는지 확인해 보는 편이 좋습니다.



2) DB 백업


보안 텔넷 명령을 쓰면 DB도 쉽게 백업할 수 있습니다. 여기에서는 널리 쓰이고있는 DB 프로그램 가운데 하나인 MySQL을 기준으로 설명합니다.


DB 자료를 벡업하려면 다음 명령을 입력합니다.


mysqldump -u(DB ID) -p(DB 비밀번호) (DB 사용자 이름) > (저장할 파일 이름).sql


(예) mysqldump -utestid -ptestpass testdb > backup090814.sql


ID가 testid 이고 비밀번호가 testpass, 사용자 이름이 testdb인 DB를 backup090814.sql 파일로 저장합니다.


백업 작업이 끝나면 생성된 백업 파일을 FTP를 통해 내려받으면 됩니다.



3) 계정 복원


계정을 복원하는 방법도 한 줄의 명령어로 처리할 수 있습니다.

우선 파일 중복으로 인해 생길 수 있는 다른 문제를 막기 위해, 현재 계정 내의 파일을 지웁니다(필수 사항은 아닙니다).


지우는 방법은 이렇습니다. 이 명령어는 최상위 디렉토리 밖에서 입력해야합니다.

 

rm -rf (최상위 디렉토리 이름)


(예) rm -rf html


최상의 디렉토리 이름이 html인 경우, html 디렉토리와 하위 파일, 디렉토리를 모두 지웁니다.



몇몇 경우에 파일 권한 설정으로 인해 일부 파일이나 디렉토리가 지워지지 않는 때도 있습니다.이 때에는 php로 명령어 스크립트를 만들어 파일을 지우면 됩니다.


1) 텍스트 파일 편집기를 써서 새로운 문서를 작성합니다. 


2) 다음 내용을 입력한 다음 적당한 이름으로 저장합니다. 확장자는 php로 정합니다. 지울 디렉토리 이름이 bbs 라면 둘째 줄에는 exec('rm -rf /bbs'); 로 입력하면 됩니다.


<?php
exec('rm -rf (디렉토리주소) ');
?>



3) 최상의 디렉도리(예: html 디렉도리 내부)에 위의 파일을 올려놓은 다음, 웹브라우저로 실행합니다. 파일 이름이 del.php라면 웹브라우저 주소창에 http://(계정 주소)/del.php 라 입력하면 됩니다. 실행되지 않을 경우 파일의 퍼미션을 777 등으로 입력하고 작업하면 됩니다.


4) 작업이 끝났으면 파일 삭제를 위해 업로드한 php 파일을 삭제합니다.


기존 파일의 삭제가 끝났으면 백업 파일을 계정의 최상위 경로에 업로드하고 다음 명령어를 입력합니다.


tar xvfpz (백업 파일 이름).tar.gz


(예) tar xvfpz backup090814.tar.gz


?backup090814.tar.gz 파일에 들어있는 내용을 계정에 풀어 놓습니다. 복원된 파일이나 디렉토리에는 백업할 당시의 퍼미션 설정이 모두 유지되어 있습니다.



4) DB 복원


DB는 다음 명령어를 입력해 복원할 수 있습니다. DB를 복원할 때에도 태이블 중복 등의 문제를 피하기 위해 기존의 항목을 깨끗하게 지워두는 것이 좋습니다(필수 과정을 아님). 기존 DB 자료의 삭제는 phpMyAdmin 같은 웹 기반 프로그램에서 하면 됩니다.


기존 DB를 정리하는 작업이 끝났으면 백업해 놓은 DB 파일을 계정의 최상위 경로(주로 html 디렉토리 밖)에 복사합니다. 준비가 끝났으면 SSH로 계정에 접속해 다음 명령을 입력합니다.


mysqldump -u(DB ID) -p(DB 비밀번호) (DB 사용자 이름) < (복원할 파일 이름).sql


(예) mysqldump -utestid -ptestpass testdb < backup090814.sql


ID가 testid 이고 비밀번호가 testpass, 사용자 이름이 testdb인 DB에 backup090814.sql 파일의 내용을 기록합니다.



복원이 끝났으면 웹브라우저를 이용해 제대로 복원이 되었나 확인하면 됩니다. 백업이나 복원 과정에 파일 권한 설정같은 문제가 생기지 않았다면 정상적으로 작동하는 웹페이지를 확인할 수 있을 것입니다. 

TAG •