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.

Últimos posts por Ricardo Martins (exibir todos)
Comentários

Deixe seu comentário

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