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/bashPASTA_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.