[워드프레스] 34. 백업 : 워드프레스 수동 백업과 이전의 구조

워드프레스 해부 34편 - 워드프레스 수동 백업과 이전의 구조

작성자

카테고리:

* 이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

(워드프레스 해부 ㉞) 백업

1편에서 잡은 감각이 여기서 빛을 발한다 — 코드는 파일에, 내용은 DB에. 그래서 워드프레스 백업·이전의 정답은 딱 두 벌이다. 파일 한 벌 + 데이터베이스 한 벌. 플러그인 없이도 이 둘만 챙기면 사이트를 통째로 옮긴다.

  • 파일 — 특히 wp-content(테마·플러그인·업로드). 코어는 새로 받아도 되지만 wp-content는 내 것이라 필수.
  • 데이터베이스 — 글·설정·사용자 전부. mysqldump로 한 파일로 뽑는다.

직접 해보기

# 1) DB 덤프 (WP-CLI가 제일 간단)
$ wp db export backup.sql

# 2) 파일 묶기 (wp-content 위주)
$ tar czf content.tar.gz wp-content

# 옮긴 곳에서 복원
$ wp db import backup.sql
# 도메인이 바뀌면 URL 치환도 필요 (다음 편 WP-CLI에서)

이전할 때 도메인이 바뀌면 DB 안에 박힌 옛 URL을 새 URL로 바꿔야 한다. 이건 다음 편 WP-CLI의 search-replace가 깔끔하게 처리한다.

✅ 확인 — wp db export로 나온 backup.sql을 열어 wp_posts·wp_options 같은 테이블이 들어 있으면, 그 파일 하나에 사이트의 모든 “내용”이 담긴 것이다. 파일 백업과 합치면 완전한 한 세트다.

흔히 막히는 지점 — 수동 백업·이전에서 자주 빠뜨리는 셋: ①wp-content/uploads(이미지 전체), ②DB 문자셋(utf8mb4) 불일치로 한글·이모지 깨짐, ③도메인 변경 시 직렬화 데이터. 특히 ③은 단순 SQL replace하면 직렬화 길이가 깨진다 — wp search-replace(WP-CLI)로 안전 치환해야 한다.

실제 명령 — DB 덤프와 파일 묶기

두 벌을 실제로 뜨는 건 명령 두 줄이면 된다. 데이터베이스는 mysqldump로 한 파일에 담고, 파일은 wp-content를 통째로 압축한다.

# 1) 데이터베이스 한 벌
mysqldump -u wp_user -p wordpress_db > backup.sql

# 2) 파일 한 벌 (테마·플러그인·업로드)
tar czf wp-content.tar.gz wp-content/

코어(wp-admin·wp-includes)는 워드프레스를 새로 받으면 되니 굳이 안 담아도 된다. 정작 중요한 건 wp-content와 이 DB 덤프다. 이 둘만 있으면 어디서든 사이트를 되살릴 수 있다.

도메인이 바뀌면 — 그냥 치환하면 안 된다

이전에서 가장 많이 사고가 나는 지점이다. 주소가 old.com에서 new.com으로 바뀌면 DB 곳곳의 URL을 바꿔야 하는데, SQL로 그냥 REPLACE하면 사이트가 깨진다. 워드프레스는 위젯·설정 값을 PHP 직렬화(serialize) 형태로 저장하는데, 그 문자열 안에는 각 값의 글자 수가 박혀 있다. URL 길이가 바뀌면 이 숫자와 실제 길이가 안 맞아 데이터가 통째로 망가진다.

그래서 직렬화를 이해하는 도구를 써야 한다. WP-CLI의 search-replace가 대표적이고, 플러그인이라면 Better Search Replace가 같은 일을 한다.

# 직렬화를 풀어 안전하게 치환 (WP-CLI)
wp search-replace 'old.com' 'new.com'

# 먼저 --dry-run 으로 몇 군데 바뀌는지 확인하는 습관을 들이자
wp search-replace 'old.com' 'new.com' --dry-run

복원 순서와 wp-config 맞추기

새 서버에서 되살릴 땐 순서가 있다. ① 빈 DB를 만들고 덤프를 임포트한다. ② 파일을 푼다. ③ wp-config.php의 DB 이름·사용자·비밀번호를 새 서버 값으로 고친다 — 여길 안 맞추면 접속부터 실패한다. ④ 도메인이 바뀌었으면 위의 search-replace를 돌린다. ⑤ 설정 → 고유주소에서 한 번 저장해 리라이트 규칙을 갱신한다. 마지막으로 wp-content의 파일 소유·권한이 웹서버 계정으로 맞는지 확인하면 마무리다.

수동이냐 플러그인이냐

수동(mysqldump+tar)백업 플러그인
비용·통제무료·완전 통제무료~유료, UI 편함
자동 스케줄서버 크론으로 직접내장(정기 자동)
대용량·서버 이관확실·유연큰 사이트는 한계
필요 지식명령·구조 이해클릭 위주

정리하면, 정기 자동 백업은 UpdraftPlus 같은 플러그인이나 서버 크론에 맡기고, 서버 이관이나 큰 이전은 이렇게 손으로 뜨는 게 확실하다. 원리를 알면 플러그인이 뒤에서 뭘 하는지도 보인다.

한 사이트를 다뤘으니, 다음은 하나의 설치로 여러 사이트를 굴리는 멀티사이트다.

자주 묻는 질문 (FAQ)

워드프레스를 수동으로 백업하려면요?

DB(mysqldump)와 파일(wp-content 중심)을 함께 받아야 합니다. 둘 중 하나만으론 복원이 안 됩니다.

다른 서버로 이전하려면요?

DB 덤프와 파일을 옮기고 wp-config의 DB 정보를 맞춘 뒤, 도메인이 바뀌면 URL을 일괄 치환합니다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다