워드프레스 사이트 백업 체계 및 백업하기


워드프레스로된 내 블로그를 백업하는 체계를 정리했다.

워드프레스 로고

사이트 백업

1996년부터 홈페이지를 html로 5년, 2005년부터 워드프레스로 블로그를 운영하고 있다. 28년간 홈페이지 또는 블로그를 운영하면서 백업을 한다. 플러그인 오류, 해킹, 글 수정 등등 다양한 접속 장애 부터 글 내용을 잃어버리는 적이 많았다. 그래도 웹 호스팅사를 이사할때 빼 놓고 운이 좋게 서버나 시스템에 망가져서 백업한 것을 복원한 적은 없다.

보안과 백업, 보험은 일어나면 그 중요성을 절실하게 깨닫는다. 다 알지만 평소에는 미루다가 사고가 터지면 후회하는게 바로 이것들이다.

최근에 지인 블로그가 아마존 라이트세일에 있는데 접속하지 못해서 백업한 것으로 새로 만들었다. 백업해 놓은게 없었다면 십몇년된 블로그가 그대로 사라질뻔 했다.

나는 가끔 풀 백업을 하고, 거의 매일 아마존 라이트세일의 스냅샷으로 백업을 하는데, 매주 정기적으로 백업을 하기로 했다. 하는 김에 나만의 워드프레스 사이트 백업체계를 정리했다.

워드프레스 문제 발생 유형 및 백업 대상

워드프레스 사이트 문제 발생 유형

나는 2005년 부터 18년 동안 워드프레스로 블로그를 운영하면서 해킹 몇 번 당해봤고, 플러그인 문제로 어드민 자체를 접속 못한 적도 많았다. xmlrpc 같은 공격으로 사이트가 죽은것은 셀 수 없고, 지금도 10초에 여러번 공격을 당하고 있다.

워드프레스 사이트를 운영하면서 발생하는 유형은 많은데 생각나는데로 일단 정리하면 다음과 같다.

웹 서버 레벨

  1. 외부 공격, 과다 크롤 등으로 웹 서버 다운 (CPU 과다, 웹서버 다운, 디비서버 다운 등)

워드프레스 사이트 뿐만 아니라 모든 사이트가 다 그런데, 워드프레스는 오픈소스라서 업데이트나 기능이 많지만 동시에 공개되어 있어 공격할 곳도 공개되어있다. 웹서버에서 막아도 웹서버가 동작을 하므로 방화벽 레벨에서 막고있다. 방화벽 ip 레벨에서만 막고 있다.

워드프레스 레벨

워드프레스는 php 프로그램이 돌아서 mysql 이나 마리아디비에 글을 저장한다. 데이터베이스가 고장난 적은 없었고, 워드프레스 자체 프로그램이 오류난 적은 없었다. 추가로 설치해서 사용하는 플러그인이나 테마에서 오류가 난다.

  1. 플러그인 오류:
  2. 테마 오류

플러그인 오류

플러그인 업데이트하다가 오류나는 경우도 있고, 플러그인 자체 오류가 있는 경우도 있다. 아무리 유명한 플러그인도 업데이트 하면 소프트웨억 변경되므로 그 어떤 소프트웨어도 오류는 없을 수 없다. 워드프레스 관리자화면에서 플러그인을 비활성화하면 된다. 문제는 관리자 화면에도 못 들어가는 경우다. 이 경우에는 fpt나 텔넷으로 들어가서 플러그인을 삭제하면 된다. 최근 한 10년 동안은 플러그인 테스트를 잘 하는지 이런 경우는 거의 없었다.

테마오류

테마 업데이트로는 거의 오류가 없다. 다만 직접 테마를 만들었거나 차일드 테마에 코딩을 하는 경우다. 테마에 코딩을 하지 않는다면 내 경우 테마 오류는 기능상 뭐가 안되는 것 말고는 테마 때문에 사이트 접속이 안되는 경우는 없었다.

워드프레스 사이트 백업 대상

워드프레스로된 사이트나 블로그는 웹 호스팅 서버가 있고, 데이터베이스에 글을 저장하고, 사진과 파일, 테마, 플러그인은 파일로 저장한다.

  • 글, 각종 설정 값: 데이터베이스(mysql 또는 마리아디비)
  • 사진, 테마, 플러그인: 파일

웹 호스팅 서버에서 워드프레스가 돌아가는데 OS, 웹서버(아파치 또는 nginx), 디비(mysql 또는 마리아디비), php, php라이브러리 등이 필요하다. 이건 웹 서버 자체를 백업하고 복원해야한다. 아마존 라이트세일의 워드프레스 이미지를 사용하다가 성능 때문에 우분투 아미지에 LEMP스택과 워드프레스를 설치했다.

워드프레스 사이트 복원 대상 및 방법

워드프레스로 된 사이트의 문제 발생 시 복원대상은 다음과 같다.

구분백업 및 복원
웹서버 전체 아마존 스냅샷
워드프레스 사이트1. 데이터베이스(글, 설정)
2. 파일(사진,테마, 플러그인)

내 블로그는 아마존 라이트세일을 사용하고 있어서, 웹 서버 전체 백업은 아마존 스냅샷을 이용한다. 스냅샷은 용량과 기간으로 과금이 되는데 금액은 얼마 되지 않는다.

워드프레스가 사용하는 데이터는 데이터베이스와 파일 형태로 저장되므로 이걸 백업한다.

워드프레스 백업 방법

워드프레스 사이트를 백업하는 방법은 백업 플러그인으로 백업하거나, 수동으로 백업하는 방법이 있다.

  1. 백업 플러그인 사용
  2. 수동 백업

워드프레스 백업 플러그인으로 백업

워드프레스 백업 플러그인으로 백업하면 데이터베이스에 저장된 글 뿐만 아니라, 사진, 테마, 플러근까지 몽땅 백업하고, 복원도 할 수 있다. dropbox나 구글 드라이브로 백업 파일을 업로드할 수 있고, 유료를 사용하면 시간을 정해서 백업을 할 수도 있다.

웹서버 이사 할때에도 정말 편하다. 워드프레스 백업 플러그인으로 백업하는게 가장 쉽다. 복원하기도 편하다. 다만 사이트별로 백업해야한다.

백업 플러그인은 다음과 같다.

  1. UpdraftPlus WordPress Backup Plugin
  2. All-in-One WP Migration

수동 백업

백업 플러그인을 사용하지 않고, 직접 파일이나 데이터베이스를 백업할 수 있다. 데이터베이스는 phpmyadmin으로 할 수도 있고, 터미널에서 mysqldump로도 할 수 있다.

내 블로그 백업하기

백업주기

  • 풀 백업: 매주
  • 개별 백업: 미정

매주 일요일 아침에 전체 백업한다. 구글 어낼리틱스로 트래픽을 보면 내 블로그 트래픽이 가장 적을 때가 이른 아침이다. 물론 새벽4~6시 정도인데, 이때에는 내가 못일어난다.

백업 방법

워드프레스 플러그인을 백업하지 않고, 수동으로 백업한다.

내가 원하는 기능이 들어 있는 백업 플러그인 있는데, 파일과 글의 용량이 많아져서 그런지 시간이 많이 걸리고, 원래 CPU를 사용하지만 직접 하는것에 비해 플러그인이 돌아야 하므로 더 쓰게 된다. 나는 아주 싼 아마존 라이트세일 서버를 사용하고 있어서 CPU 사용이 부담스럽다. 난 한 서버에 여러개의 사이트를 돌리는데, 백업 플러그인을 사용하면 사이트별로 백업을 해야한다.

그래서 아직 수동으로 백업한다. 수동으로 여러번 해보면서 체계가 잡히면 자동화를 하는게 좋은 것 같다. 아직 체계를 잡지 못한게 몇 개 있지만 전체 백업은 조만만 크론으로 바꿔서 접속 시간이 가장 적은 신세벽에 돌려야 겠다. 파일을 gzip으로 압축할때 cpu 를 꽤 많이 사용해서이다.

아직 사이트별로 백업하는 건 체계를 정리하지 않았다. 발생 상황별로 백업대상이 다르고, 백업은 복원을 고려해야하는데 사이트별로 백업과 복원은 좀 귀찮다.

백업은 최근 2개만 유지한다. 파일 용량이 커져서 2개만 유지한다.

파일은 iCloud 드라이브에 올린 후 다운로드제거를 해서 내 맥 용량을 차지하지 않게 한다. iCloud 드라이브가 문제가 없다고 볼 수 없으니 dropbox 에 업로드한다. 외장하드에 백업은 안하기로 했다. 외장하드를 연결해서 복사하는 게 귀찮기도 하지만 외장 하드는 시간이 지나면 파일이 깨진다.

워드프레스 수동 백업하기

나는 한 서버에 여러개의 사이트가 있아서 사이트 전체를 한 번에 백업한다.

  1. 서버 전체 백업: 라이트세일 스냅샷(업데이트 중 오류발생 등의 문제 대비)
  2. 워드프레스 업데이트
  3. 파일 백업
  4. 디비 백업
  5. 백업파일 백업
  6. 서버전체 백업(라이트세일 스냇샵)

서버 전체 백업

아마존 라이트세일의 스냅샷을 만든다. 스냅샷을 떠 놓으면 다른 서버로 똑 같이 만들 수 있다. 마치 윈도우 사용할때 고스트로 전체를 떠 놓은 것과 같다.

워드프레스 업데이트

스냅샷을 뜬 후에 워드프레스 코어나 워드프레스 플러그인과 테마에 업데이트할게 있으면 업데이트한다.

가끔 해킹 위험이 있는 플러그인이 있다. 그래서 플러그인 중에 보안 업데이트는 바로바로 업데이트해야하는데, 업데이트 내용이나 워드프레스 해킹 정보를 보는게 귀찮아서 매주 백업할때 업데이트한다.

테마와 플러그인 업데이트가 있으면 트래픽이 적을때 업데이트하곤 했는데, 업데이트하다 문제가 발생할 수도 있다. 그래서 트래픽이 적은 시간에 백업할 때, 사이트 전체를 스냅샷으로 백업 한 후에 플러그인과 테마, 워드프레스를 업데이트한다.

사진,테마,플러그인 백업하기(파일)

파일 형태이므로 워드프레스 폴더 전체를 백업하면 된다. 워드프레스 캐시 플러그인이 만든 캐시 폴더도 같이 백업한다. 백업 파일 용량을 고려하면 캐시를 삭제해야하지만, 다시 캐시를 만드는데 필요한 CPU사용을 고려하면 그냥 두는게 나을 것 같다.

워드프레스 폴더 전체를 tar로 묶어서 압축한후, ftp로 맥으로 다운로드하고, iCoud 드라이브에 업로드 한 후 다운로드제거를 해서 내 맥북 용량을 차지하지 않게 한다.

sudo tar -zcvf 20230604_www.tar.gz /var/www

파일 형태라 복원할때에는 파일만 업로드하면 된다.

파일을 tar로 묶고 gzip으로 압축할 때 서버 CPU를 많이 사용한다. 파일 백업 때문에 사용자가 별로 없는 시간에 압축해야한다. 압축하기전에 서버에 남은 용량이 있는지 확인해야한다

df -h

압축하지 않고 바로 파일을 다운로드할 수도 있는데 시간이 많이 걸린다. 로컬 파일과 서버 파일을 비교해서 변경된 것만 가져오는 것도 해봤는데 비교하고, 하나씩 파일을 다운로드 하는데 시간이 많이 걸린다. 그냥 통째로 압축해서 다운로드 하는게 빠른 것 같다.

백업하려고 하는데 사용자 접속이 많거나, 서버의 남은 저장용량이 간당간당하다면 압축하지 그냥 FTP로 다운로드 한다.

글 백업하기(데이터베이스)

나는 mysql 대신 마리아디비를 사용하는데 명령어는 같다. 사이트 상관없이 전체를 백업한다.

1.전체 백업

sudo mysqldump  -A > mysql.sql

2.압축

tar -zcvf 20230604_mysql.tar.gz mysql.sql

백업 파일 백업

파일과 디비 백업 파일을 iCloud 드라이브에 백업한다.

  1. iCloud 드라이브 폴더에 다운로드
  2. iCloud 드라이브에서 다운로드제거하기

마치며

매주 사이트 전체를 백업한다. 아직 사이트별로 백업하는 건 안하고 있고, 자동화는 해야한다.

앞으로 나가는 것도 좋지만 가끔 멈추서서 뒤를 돌아보는 것도 중요한 것 같다. 한 번 사고나면 복구할 수 없으니 귀찮더라도 정기적으로 백업 하니 조금 안심이 된다.







제휴 링크로 구매 시 제휴마케팅 활동의 일환으로 일정액의 수수료를 지급받아 콘텐츠를 제작하는데 큰 도움이 됩니다.



도움이 되셨다면, 댓글이나 소중한 커피 한 잔 부탁드려도 될까요?

커피 사주기
























당신이 좋아할 만한 글







윗몸일으키기: 윗몸일으키기 카운터

윗몸일으키기 하면 자동으로 횟수 측정, 횟수를 음성으로 세주고, 윗몸일으키기 속도 분석, 일별/월별/연도별 운동 기록 관리









Add a Comment

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