Carregando...
Administração de SistemasBASHWordpress

Fazendo backup de um WordPress

Gosto de dividir o WordPress em 3 pedaços que podem ser feitos backup separadamente.

A primeira é o código do WordPress em PHP, seus temas e plugins.
A segunda é a pasta /wp-content/ onde são armazenados as imagens e outros arquivos de mídia. Essa pasta pode ficar super pesada dependendo do seu website.
A terceira é o banco de dados (MySQL ou PostgreSQL), onde são armazenadas configurações, posts, comentários…

Há três abordagens para backup do WordPress, uma mais simples, apenas comprimindo arquivos e armazenando-os, outra usando rsync e outra usando git.

Método de apenas compressão

Uma das formas mais simples de se fazer backup é criar pastas comprimidas em gz/zip/7z no próprio servidor e enviá-las para outro local para armazenamento.

Esse é o script que uso para fazer backup do WordPress em hospedagens compartilhadas (tipo Locaweb, Hostgator, GoDaddy, etc). Ele apenas cria um versão comprimida dos arquivos em uma outra pasta dentro do proprio servidor. A transferência fica à seu cargo.

#!/bin/bash

PASTA_RAIZ=`pwd`
TIMESTAMP_ATUAL=`date +%Y-%m-%dT%H:%M:%S`
ORIGEM_BKP="${PASTA_RAIZ}/public_html"
DESTINO_BKP="${PASTA_RAIZ}/backups/${TIMESTAMP_ATUAL}_wp_code.tgz"
WORDPRESS_UPLOADS="${ORIGEM_BKP}/wp-content/uploads"
# Handle different tar version bugs https://unix.stackexchange.com/questions/32845/tar-exclude-doesnt-exclude-why
# Unbelievable! It turns out that an older version of tar (1.15.1) would only exclude if the top-level dir 
# is last on the command line. This is the exact opposite of how version 1.23 requires. FYI.
COMANDO_EXCLUSAO="--exclude=${WORDPRESS_UPLOADS}"
COMANDO_BACKUP_SEM_UPLOADS="/bin/tar -czpf ${DESTINO_BKP} ${COMANDO_EXCLUSAO} ${ORIGEM_BKP}"
DESTINO_BKP_UPLOADS="${PASTA_RAIZ}/backups/${TIMESTAMP_ATUAL}_wp_uploads.tgz"
COMANDO_BACKUP_UPLOADS="/bin/tar -czpf ${DESTINO_BKP_UPLOADS} ${WORDPRESS_UPLOADS}"

#Executando o comando de backup
echo 'Executando backup sem uploads'
echo ${COMANDO_BACKUP_SEM_UPLOADS}
echo ${COMANDO_BACKUP_SEM_UPLOADS} >> no-upload.log
${COMANDO_BACKUP_SEM_UPLOADS}
echo 'Executando backup com uploads'
echo ${COMANDO_BACKUP_UPLOADS}
echo ${COMANDO_BACKUP_UPLOADS} >> upload.log
${COMANDO_BACKUP_UPLOADS}

Método RSync

Referências

Como usar o RSync
https://www.digitalocean.com/community/tutorials/how-to-use-rsync-to-sync-local-and-remote-directories-pt

Método Git

Comece alterando o arquivo .htaccess dentro da public_html para bloquear o acesso público da pasta .git, pois uma cópia do seu website ficará por lá e não queremos esta cópia ser publicada na web, principalmente o arquivo wp-config.php com todas as senhas do seu WordPress.

Inicie um repositório git dentro da pasta public_html, faça commit, adicione um remote, e faça o push.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *