Cursos Magento

Como fazer e restaurar um backup no Magento

,

Publicado em 25 de setembro de 2023

Antes de alterar algo importante, ou antes de um deploy, é sempre importante fazermos uma cópia de segurança dos arquivos de nossa loja. Não apenas dos arquivos, mas também do banco de dados e das imagens de produtos e páginas, não é mesmo?

No Magento 2 isso é bastante simples de ser feito.

Você pode realizar um backup de código, fotos e banco de dados no Magento com apenas um comando (via terminal), como mostrado abaixo:

bin/magento setup:backup --code --media --db

O setup:backup acima colocará sua loja em modo manutenção e realizará o backup completo dos arquivos de media (fotos de produtos e arquivos), banco de dados e dos arquivos da loja.

bin/magento setup:backup --code --media --db                
Enabling maintenance mode
Code backup is starting...
Code backup filename: 1695614833_filesystem_code.tgz (The archive can be uncompressed with 7-Zip on Windows systems)
Code backup path: /var/www/html/var/backups/1695614833_filesystem_code.tgz
[SUCCESS]: Code backup completed successfully.
Media backup is starting...
Media backup filename: 1695614833_filesystem_media.tgz (The archive can be uncompressed with 7-Zip on Windows systems)
Media backup path: /var/www/html/var/backups/1695614833_filesystem_media.tgz
[SUCCESS]: Media backup completed successfully.
DB backup is starting...
DB backup filename: 1695614833_db.sql
DB backup path: /var/www/html/var/backups/1695614833_db.sql
[SUCCESS]: DB backup completed successfully.
Disabling maintenance mode

O backup será salvo em <pastaMagento>/var/backups. Um arquivo para cada tipo de backup será realizado.

Habilite o recurso de backup antes de usar

Para que o recurso de backup funcione como esperado, é preciso ativá-lo. Para fazer isso, navegue até Loja > Configurações > Avançado > Sistema > Configurações de Backup e ative o mesmo.

Configurações de Backup Magento 2

Se preferir, digite bin/magento config:set system/backup/functionality_enabled 1 no terminal para ativá-lo.

Listando Cópias de Backup disponíveis

Como mencionei há pouco, os arquivos de backup ficam disponíveis na pasta var/backups. Mas você também pode obter uma lista amigável com o comando bin/magento info:backups:list, como mostrado abaixo.

 ✗ bin/magento info:backups:list
Showing backup files in /var/www/html/var/backups.
+---------------------------------+-------------+
| Backup Filename                 | Backup Type |
+---------------------------------+-------------+
| 1695614833_filesystem_code.tgz  | code        |
| 1695614770_filesystem_code.tgz  | code        |
| 1695602905_filesystem_code.tgz  | code        |
| 1695614833_db.sql               | db          |
| 1695602905_filesystem_media.tgz | media       |
| 1695614770_filesystem_media.tgz | media       |
| 1695614833_filesystem_media.tgz | media       |
+---------------------------------+-------------+

Restaurando um backup

Para restaurar um dos backups use o comando bin/magento setup:rollback [-c|--code-file=""] [-m|--media-file=""] [-d|--db-file=""]`.

Ou seja, -c para código, -m para arquivo de media, e -d para banco de dados.

Por exemplo:

bin/magento setup:rollback -c 1695614833_filesystem_code.tgz

O que é salvo nestes backups?

Backup de Código

Nos backups de código, o Magento salva praticamente todas as pastas. Isto inclui as pastas vendor, generated/code, setup, e outras pastas de sistema. Arquivos invisíveis como .htaccess também são salvos.

Os únicos arquivos e pastas que são ignorados por padrão são:

  • Pasta Media (pub/media)
  • Conteúdos estáticos (pub/static)
  • Diretório Var (/var)
  • /update
  • /node_modules
  • /.grunt
  • /.idea
  • /.svn
  • /.git

Backup de Media

O backup de media salvará toda pasta pub/media. Neste diretório encontram-se as fotos de produtos, e arquivos enviados pelo editor visual do Magento.

Este backup também inclui arquivos de cache de imagens e não somente as imagens originais.

Se você preferir criar um backup manual sem as pastas de cache, você pode fazê-lo manualmente com o comando abaixo à partir da raiz de sua loja:

tar -czvf media.tar.gz --exclude='*/cache/*' --exclude='*/import/*' pub/media/

Backup do banco

O backup do banco é feito de forma completa sem exceções. Todas as tabelas, funções, chaves de relacionamento e tudo mais é salvo no arquivo .sql sem compactação.

Se seu objetivo com este backup é apenas de importá-lo em um ambiente de desenvolvimento ou enviá-lo para um desenvolvedor, certamente este não é o melhor caminho.

Nestes casos você deveria ocultar tabelas e dados desnecessários (ex: tabela de logs) a fim de reduzir seu tamanho e evitar o compartilhamento de dados de seus clientes e pedidos.

O arquivo gerado também encontra-se descompactado, diferente dos backups anteriores. Isto também causará um enorme desperdício de disco, já que arquivos deste tipo podem ser facilmente compactados em 90% ou mais com qualquer ferramenta.

Particularmente, eu usaria o n98-magerun ou o próprio mysqldump para este fim.

Segurança

Caso você tenha cometido o O clássico erro da pasta pub nas instalações Magento 2, lembre-se de assegura-se que ninguém conseguirá listar o conteúdo de sua pasta var/backups.

Para isso, tente acessar https://sualoja.com/var/backups e garanta que a lista dos arquivos de backup gerados não está sendo exposta. Isto permitiria que qualquer pessoa baixasse os arquivos que gerou.

Comentários

Deixe seu comentário

[fbcomments url="https://www.magenteiro.com/blog/magento-2/backup-magento-codigo-banco-fotos/"]