워드프레스 초보자 입장에서 백업은 큰 고민거리입니다.

워드프레스 백업 플러그인을 쓰면 편할 거예요. 하지만 php.ini 환경 설정(업로드/다운로드 용량 제한)에 따라 백업/복원이 실패하는 경우가 있어서, 보따리 싸서 홈서버/호스팅/VPS 옮다니는 과정이 가시밭길이 될 수도 있습니다. 마찬가지로 phpMyAdmin을 통한 DB 백업도 비슷한 한계점이 있어요.


SSH 콘솔 창에서(또는 우분투 GUI에서 터미널 띄우고) 워드프레스 백업/복원을 해봤더니 php 기반으로 처리할 때보다 안정적이더군요. mysqldump 명령어도 DB 용량이 커지면 완벽하게 처리되지 않을 수 있다고 하는데, 그건 블로그가 커졌을 때 고민해봐야죠.ㅠㅠ

아무튼, 제가 쓰는 방법을 정리해 두겠습니다.


▲ 혼자서 워드프레스 쓰면 필요 없는 과정인데, 여럿이서 쓰는 워드프레스라면 백업 작업 중에는 아파치/Nginx 서비스를 잠시 중단시키면 좋을 겁니다. 다른 사람이 데이터를 기록하는 것을 막는 거죠.



1. 워드프레스 데이터 백업


워드프레스 설치 디렉토리에는 워드프레스, 테마, 플러그인, 첨부파일(미디어파일)이 저장되어 있습니다. 이것들을 압축해서 빼내면 효율적이겠죠?


▲ cd 명령어로 웹루트(또는 워드프레스 파일들이 있는) 경로에 접근해주세요. 그리고

sudo tar cvfzp 원하는파일명.tar.gz *

형식으로 입력하면 경로에 tar.gz 확장자의 압축파일이 생기고, 이 파일에 워드프레스 데이터가 압축 저장됩니다.


※ 참고로 tar 명령어의 옵션을 일부 추려내서 살펴보면...(tar --help 라고 치면 한글로 자세하게 나옵니다)

-c : tar파일을 생성하겠다! (기본 사용)

-x : tar파일을 풀겠다!

-t : tar파일의 내용을 확인하겠다!

-f : (c 옵션으로 생성한) tar파일을 사용하겠다! (기본 사용)

-p : tar파일을 생성or풀때 원본 파일속성(퍼미션)을 유지하겠다!

-v : 묶거나 풀 때 과정 보기 (거의 기본적으로 사용)

-z : gzip(gunzip) 을 사용하겠다!

-j : bzip(bunzip2) 을 사용하겠다!


▲ 과정이 끝난 뒤에 웹루트 경로를 확인해보니 backup.tar.gz 파일이 생성되어 있네요.


▲ 이 압축파일을 파일질라 FTP Client, 클라우드 드라이브, 외장하드 등을 이용해서 외부로 빼내면 되겠죠? 

(워드프레스 설치 직후에 압축했더니 12MB까지 줄었네요.)



2. 워드프레스 DB 백업


워드프레스 DB에는 텍스트 기반 정보들이 (많이!) 들어있습니다.


▲ 작성한 글도 HTML 코드로 저장되어 있고, 댓글도, 회원 정보도...


그래서 워드프레스에서 DB는 굉장히 중요합니다.


워드프레스 DB를 백업하려면 터미널 창에서 mysql 계정 정보와 DB 정보를 입력해야 되므로 관련 정보를 알고 있어야 됩니다.


만약 기억나지 않는다면?


▲ 워드프레스 설치 경로에 있는 wp-config.php 파일을 에디터로 열어보면 확인 가능합니다.

DB_NAME | DB_USER | DB_PASSWORD | table_prefix 정도를 알아두면 좋아요.


서두가 너무 길었나요? 이제 DB 백업 명령어를 적겠습니다.


▲ cd 명령어로 웹루트(또는 워드프레스 파일들이 있는) 경로에 접근해주세요. 그리고

sudo mysqldump -u DB계정명 -p DB명 > 원하는파일명.sql

형식으로 입력 후 Enter password에 DB 패스워드를 넣으면 경로에 .sql 확장자로 DB가 추출되어 저장됩니다.

(DB계정명 : DB_NAME, DB명 : DB_PASSWORD)

(서버 설정에 따라 호스트명을 추가해야 할 수도 있습니다. sudo mysqldump -h 127.0.0.1 -u DB계정명 -p DB명 > 원하는파일명.sql 이렇게요.)



저처럼 시작하는 입장이라면 위의 mysqldump 명령어로 워드프레스 DB만 전체 백업하는 것으로 꽤 오래 버티실 수 있을 것 같아요. 그런데 DB 내의 특정 테이블만 골라서 백업하고 싶은 경우가 생길 수 있다고 봐요. DB 용량이 커져서 일부만 백업한다던지 할 때...


▼ 그 때는 아래 스샷처럼 명령어를 구성하면 됩니다.

▲ sudo mysqldump -u DB계정명 -p DB명 테이블명 > 원하는파일명.sql

(워드프레스 설치 직후에 테이블 개수가 몇 개인지 조회해봤는데 12개로 나오네요.)


▲ DB 백업 파일이 잘 생성되었네요! 이 DB 백업 파일을 파일질라 FTP Client, 클라우드 드라이브, 외장하드 등을 이용해서 외부로 빼내면 되겠죠?


한가지 팁을 드리자면...

DB백업을 먼저 하고 워드프레스 데이터를 백업하면(tar.gz) tar.gz 파일에 DB 백업 파일이 내장되기 때문에 관리하기 편하겠죠?



3. 워드프레스 백업 데이터 복원


백업했던 tar.gz 파일을 파일질라 FTP Client/클라우드 드라이브/외장하드 등을 이용해서 웹루트 경로(또는 압축을 풀고 싶은 경로)에 복사하세요. 만약 다른 웹서버에 올려뒀다면 wget 명령어로 받으면 되니까 편하겠네요.


▲ cd 명령어로 웹루트(또는 워드프레스 파일을 풀고자 하는) 경로에 접근해주세요. 그리고

sudo tar xvfzp 백업파일명.tar.gz

라고 입력해줍니다. 압축이 풀리면서 데이터가 복원됩니다. 기존 데이터는 (질문 없이) 덮어씌워지고요.

만약 압축파일이 있는 곳의 경로와 압축이 풀릴 경로를 지정하여 명령을 내리고 싶다면

sudo tar xvfzp /원본경로/백업파일명.tar.gz -C /목적지경로/

이런 형식으로 구성하면 됩니다(C는 대문자!).


※ 다시 살펴보는 tar 명령어의 옵션(중 일부)

-c : tar파일을 생성하겠다! (기본 사용)

-x : tar파일을 풀겠다!

-t : tar파일의 내용을 확인하겠다!

-f : (c 옵션으로 생성한) tar파일을 사용하겠다! (기본 사용)

-p : tar파일을 생성or풀때 원본 파일속성(퍼미션)을 유지하겠다!

-v : 묶거나 풀 때 과정 보기 (거의 기본적으로 사용)

-z : gzip(gunzip) 을 사용하겠다!

-j : bzip(bunzip2) 을 사용하겠다!


▲ rm 명령어로 압축파일을 지워주면 깔끔하겠죠?



4. 워드프레스 DB 복원


백업했던 .sql 파일을 파일질라 FTP Client/클라우드 드라이브/외장하드 등을 이용해서 웹루트 경로(또는 압축을 풀고 싶은 경로)에 복사하세요. 만약 다른 웹서버에 올려뒀다면 wget 명령어로 받으면 되니까 편하겠네요.


sudo mysql -u DB계정명 -p DB명 < DB파일명.sql

형식으로 입력 후 Enter password에 DB 패스워드를 넣으면 DB가 복원됩니다. 기존에 존재하는 DB는 (질문 없이) 덮어씌워지고요.

sql 파일에 DB 전체가 백업되었었든 일부 테이블만 백업되었었든 해당 부분이 알아서 기록됩니다.

(서버 설정에 따라 호스트명을 추가해야 할 수도 있습니다. sudo mysql -h 127.0.0.1 -u DB계정명 -p DB명 < DB파일명.sql 이렇게요.)


▲ 만약 DB 복원 도중 'ERROR 1049 (42000): Unknown database' 에러를 보게 된다면 해당 이름의 DB가 없는 것이니까 mysql 접속 후 CREATE DATABASE 명령어로 DB를 생성 후 빠져나옵니다. 그리고 다시 DB 복원을 시도합니다.



5. 사진 업로드 테스트


DB 복원까지 성공했다면 웹브라우저로 사이트에 접속해보세요. 복구가 잘 된 것을 확인할 수 있을 겁니다.

글도 작성해보고 사진/파일도 업로드 해보세요.


▲ 그런데 사진 업로드 중에 "서버에서 부모 디렉토리에 쓰기가 가능합니까?"와 같은 에러가 뜬다면 업로드 디렉토리 소유자 설정이 꼬였을 확률이 높습니다. 점검해보세요.


▲ /wp-content/uploads/ 디렉토리 및 하위 디렉토리&파일의 소유자:소유그룹이 www-data 로 되어 있지 않을 겁니다(위 스샷은 정상적으로 업로드 되는 디렉토리를 캡처한 것입니다.).



위의 스샷과 아래 명령어들을 참고해서 본인의 uploads 디렉토리와 하위 디렉토리&파일의 소유자, 소유그룹, 권한을 적절히 바꿔주세요. 정답은 없습니다. 업로드 되고 보안성을 해치지만 않으면 되는 거예요.


sudo chown 소유자:www-data /웹루트경로/wp-content/uploads/

sudo chmod 775 /웹루트경로/wp-content/uploads/

sudo chown -R www-data:www-data /웹루트경로/wp-content/uploads/*

( -R 옵션은 하위 디렉토리와 파일에 모두 적용하라는 옵션으로, chmod와 chown 모두에 쓸 수 있는 옵션입니다. )



▲ 햄스터

반응형