웹사이트나 블로그를 백업하는 일은 여러 플러그인을 설치하거나 호스팅 업체의 유료 요금제를 추가로 구매해야 하는 등 비용과 시간이 많이 드는 번거로운 작업처럼 느껴질 수 있습니다. 하지만 실제로는 그렇지 않습니다.
웹사이트에 대한 SSH 접근 권한만 있다면 다양한 고급 작업을 원격으로 손쉽게 수행할 수 있습니다. 이 글에서는 명령줄 세션에서 SSH를 활용해 웹사이트를 백업하는 방법을 단계별로 소개합니다.
SSH 명령줄이란?
SSH는 웹 서버와 직접 통신할 수 있는 기능을 제공합니다. 예쁜 인터페이스나 GUI는 없으며, 오직 강력한 명령줄만 존재합니다. 처음에는 다소 어렵게 느껴질 수 있지만, SSH가 제공하는 막강한 성능, 속도, 자동화 수준은 정말 큰 도움이 되며 사이트 이전 작업마저 놀랍도록 쉽게 만들어 줍니다.
안타깝게도 많은 공유 호스팅 업체는 기본적으로 SSH 접근을 허용하지 않습니다. 하지만 이런 추세는 점차 바뀌고 있으며, 리눅스 호스팅을 사용한다면 SSH 접근이 가능한 경우가 많습니다. GoDaddy에서 웹사이트를 호스팅한다면 SSH가 기본적으로 활성화되어 있어야 합니다. 만약 그렇지 않다면 GoDaddy cPanel 인터페이스에서 SSH를 직접 활성화할 수 있습니다. 다른 호스팅 업체들도 유사한 기능을 제공합니다.
한편 VPS와 전용 서버 호스팅은 SSH 사용을 허용합니다. 호스팅 방식의 차이를 잘 모르겠다면 웹 호스팅 서비스 비교 가이드를 참고해 보세요.
컴퓨터에서 SSH 사용하는 방법
세 가지 주요 데스크톱 운영체제 모두 SSH를 지원하는 명령줄 인터페이스를 갖추고 있습니다.
- Windows: Windows PowerShell 사용 (PuTTY도 사용 가능)
- macOS: 터미널(Terminal) 사용
- Linux: 역시 터미널(Terminal) 사용
해당 인터페이스를 열고 ssh 명령어를 입력하면 관련 도구를 바로 사용할 수 있습니다.
명령줄 환경을 처음 접한다면 다소 어렵게 느껴질 수 있습니다. 지금 당장 SSH의 모든 것을 알려드리기는 어렵지만, 작업 속도를 높여 주는 유용한 단축 팁 두 가지를 소개합니다.
- 위아래 화살표 키를 눌러 이전에 입력했던 명령어를 순환하며 불러올 수 있습니다.
- 긴 파일명을 입력할 때 Tab 키를 누르면 이름이 충분히 고유한 경우 자동 완성됩니다.
SSH에 익숙해졌다면 이제 웹사이트 백업을 시작할 차례입니다.
SSH로 웹사이트에 로그인하기
선호하는 SSH 도구를 실행하고 다음을 입력하세요.
ssh username@yourdomain.com
IP 주소만 사용할 수도 있습니다. URL이 아직 할당되지 않은 웹 서버에 접속하거나, 사이트 이전으로 URL이 변경된 경우에 특히 유용합니다.
ssh username@YOUR.IP.ADDRESS.HERE
메시지가 표시되면 비밀번호를 입력하세요. SSH를 처음 사용한다면 비밀번호를 입력해도 화면에 아무것도 표시되지 않아 당황할 수 있습니다.
걱정하지 마세요. 보안을 위한 정상적인 동작입니다.
로그인에 성공하면 다음과 같은 명령 프롬프트가 나타납니다.
-bash-3.2:~$
이것이 보이면 모든 것이 정상이라는 뜻입니다. 이제 다음 명령어들을 계속 입력해 보세요.
먼저 서버 내부를 둘러보고 웹 디렉터리로 이동해 보겠습니다. 다음을 입력합니다.
ls
현재 위치의 파일과 폴더 목록이 표시됩니다.
cd directoryname
위 명령어로 디렉터리를 변경할 수 있습니다. 여기서는 웹사이트의 루트인 httpd 디렉터리로 이동하겠습니다.
cd httpd
그런 다음 제대로 이동했는지 확인하기 위해 다시 한번 ls를 입력할 수 있습니다.
ls
이제 SSH 백업 프로세스를 시작할 준비가 되었습니다.
SSH로 웹사이트 데이터베이스 백업하기
대부분 WordPress 설치본을 백업하게 될 텐데, 이 경우 데이터베이스와 파일 모두를 백업해야 합니다.
데이터베이스를 백업하려면 세 가지 정보가 필요합니다. 다행히 WordPress를 사용 중이라면 wp-config.php 파일에서 모두 확인할 수 있습니다.
- 데이터베이스 이름
- 데이터베이스 사용자명
- 데이터베이스 비밀번호
(다른 데이터베이스 기반 웹 애플리케이션을 사용한다면 해당 애플리케이션의 설정 문서에서 이 정보를 찾으세요.)
그런 다음 아래 간단한 명령어를 입력합니다. 필요에 따라 사용자명, 테이블 이름, 백업 파일명을 본인 환경에 맞게 교체하세요.
mysqldump --add-drop-table -u [username] -p [tablename] > [backupfilename].sql
Enter 키를 누르고 메시지가 표시되면 비밀번호를 입력합니다. 실행이 완료되면 ls 명령어를 다시 입력해 SQL 파일이 정상적으로 생성되었는지 확인할 수 있습니다. 축하합니다! 데이터베이스의 모든 정보가 하나의 SQL 파일로 저장되어 백업하거나 다른 곳으로 가져갈 준비가 되었습니다.
SSH로 데이터베이스에 접근할 수 없는 경우
여기까지는 데이터베이스 서버가 호스팅 서버와 동일한 서버에서 실행된다고 가정했습니다.
하지만 GoDaddy의 경우 MySQL 데이터베이스가 SSH 접근 권한이 없는 별도의 원격 서버에 저장됩니다. 이런 경우에는 호스트의 cPanel을 통해 PHPMyAdmin에 접속해 백업해야 하며, 이는 본 튜토리얼의 범위를 벗어납니다.
SSH로 웹사이트 파일 백업하기
데이터베이스가 서버에 단일 파일로 저장되었다면 이제 SSH를 통해 사이트 파일을 백업할 수 있습니다. 먼저 cd 명령어로 백업 파일을 생성할 디렉터리로 이동합니다. 그다음 아래 명령어를 사용합니다.
tar -vcf yourbackupfilename.tar /directory/path
각 부분이 무엇을 의미하는지 살펴보겠습니다.
- tar — zip과 유사하지만 더 효율적인 일반적인 리눅스 압축 형식입니다.
- -vcf — "새 아카이브를 생성하고 진행 상황을 알려달라"는 의미의 간단한 옵션입니다.
- yourbackupfilename.tar — 아카이브에 지정할 파일 이름입니다.
- /directory/path — 백업할 웹사이트 디렉터리 경로입니다.
파일 경로 대신 마침표(.) 하나를 사용하면 현재 위치의 모든 항목을 포함하도록 지시할 수 있습니다. *를 와일드카드로 사용할 수도 있지만, 이 경우 .htaccess 같은 숨김 파일이 제외됩니다. .htaccess는 WordPress 운영에 필수적인 파일이므로 주의해야 합니다.
명령 실행이 완료되면 사이트의 모든 파일이 담긴 단일 TAR 파일이 생성됩니다.
이 시점에서 FTP로 연결해 사이트 아카이브를 로컬 컴퓨터로 다운로드하면 됩니다.
SSH로 웹사이트 백업 복원하기
최악의 상황이 발생해 사이트에 심각한 문제가 생겼다고 가정해 보겠습니다. 지난주에 백업해 둔 TAR 파일이 있다면 이를 복원하면 됩니다.
먼저 FTP로 로그인해 백업 파일을 서버의 루트 디렉터리에 업로드합니다.
그다음 모든 파일의 압축을 해제합니다. 백업할 때 했던 작업의 정반대 과정입니다.
tar -vxf yourbackupfilename.tar
경고: 이 작업은 기존 파일을 덮어씁니다!
백업 명령어와의 핵심적인 차이는 다음 부분입니다.
-vxf
— tar에게 새 백업을 생성하는 대신 파일을 추출(압축 해제)하라고 지시합니다.
마지막 단계는 데이터베이스를 이전 상태로 되돌리는 것입니다. 먼저 이전과 동일한 비밀번호와 테이블 이름을 가진 빈 데이터베이스를 준비합니다. 그렇지 않으면 사이트 구성 설정(wp-config.php 등)도 함께 변경해야 합니다.
데이터베이스를 복원하려면 다음 명령어를 사용합니다.
mysql -u [username] -p [tablename] < [databasebackupfilename].sql
SSH 웹사이트 백업: 웹 콘솔과 플러그인보다 빠릅니다
사이트 백업을 돕는 다양한 도구와 플러그인이 출시되어 있지만, 어떤 것도 SSH만큼 빠르고 효율적이지 않습니다.
GoDaddy든 다른 호스팅 업체든 SSH 접근 권한만 있다면 이제 웹사이트를 손쉽게 백업할 수 있습니다. 더 깊이 알고 싶다면, 다음 단계로 SSH를 활용해 리눅스 서버를 원격으로 관리하는 방법을 익혀보세요.