Criar arquivos com o 7-Zip para backup offline

Eu faço regularmente backups para discos externos encriptados, não confio em sistemas na cloud.

Comecei a usar o 7-Zip com um ficheiro .bat para criar arquivos automaticamente e tornar mais rápido este processo.

Svalbard Global Seed Vault

Faço regularmente backups para discos externos ligados via USB e copiar vários ficheiros pequenos como é o caso de um site ou uma app é demorado. E tentar ignorar alguns ficheiros como é o caso da pasta node_modules do NPM manualmente é impossível.

Como uso Windows e tenho o 7-Zip instalado decidi criar um ficheiro .bat que me cria automaticamente arquivos .7z sem ficheiros que pretendo ignorar, como a pasta node_modules. Assim apenas clico duas vezes, os arquivos são criados e a passagem do computador para os discos externos é muito mais rápido.

Aqui fica o código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@ECHO OFF
REM Gera data no formato YYYY-MM-DD
set year=%date:~6,4%
set month=%date:~3,2%
set day=%date:~0,2%
set filename=%year%-%month%-%day%

REM Pasta de destino
set output=files/

REM Projectos Web
"C:\Program Files\7-Zip\7z.exe" a -t7z "%output%Projectos Web - %filename%.7z" "X:\Projectos\*.*" -mx1 -mmt -r -xr!node_modules

REM Projectos Android
"C:\Program Files\7-Zip\7z.exe" a -t7z "%output%Projectos Android - %filename%.7z" "X:\Android\*.*" -mx1 -mmt -r -xr!SDK

Primeiro gero a data actual em formato YYYY-MM-DD para ser usado no nome do ficheiro e indico a pasta de destino. Depois corro os comandos do 7-Zip.

Pegando no exemplo deste comando, "C:\Program Files\7-Zip\7z.exe" a -t7z "arquivo.7z" "X:\Pasta\*.*" -mx1 -mmt -r -xr!node_modules, estes são os parâmetros:

a -t7z: O a indica que é para adicionar ficheiros e o -t7z indica que o formato é em 7z. Pode-se usar -tzip para um arquivo zip.
arquivo.7z: Indica a pasta e nome do ficheiro onde vai ser colocado o arquivo. No exemplo acima é indicada a pasta e nome do ficheiro com data.
X:\Pasta\*.*: Indica a pasta cujos ficheiros se devem adicionar. Vão ser adicionados todos os ficheiros dentro desta pasta.
-mx1: Nível de compressão. Pode ser usado -mx0 para guardar sem compressão
-mmt: Multithreading, para usar todos os cores/threads disponíveis do CPU
-r: Adiciona ficheiros de forma recursiva. Todos os sub-directórios da pasta que indicamos são também adicionados
-xr!: Remove de forma recursiva ficheiros ou directórios com este nome. Para múltiplas pastas deve-se repetir o código

Estou a criar o arquivo com compressão com o parametro -mx1 porque nos meus testes a diferença são cerca de 25 segundos para o mesmo comando sem compressão e os arquivos reduziram de 2,13GB para 1,37GB. Além de reduzir o espaço ocupado torna-se mais rápido a passar para os discos externos.

Valores superiores de compressão deixam de compensar em termos de tempo, a não ser que espaço seja uma questão.

Em relação a ignorar pastas e ficheiros, para adicionar mais regras basta repetir o código. Por exemplo para ignorar todas as pastas com o nome node_modules ou vendor eram adicionados os parâmetros no final como -xr!node_modules -xr!vendor.

E porque não backups automáticos para a Cloud ou usar GitHub?

Possivelmente só eu e outras 3 pessoas no mundo é que vão achar este artigo útil. Eu não tenho confiança em fazer backups para Dropbox, Google Drive ou OneDrive de ficheiros que não estejam encriptados com TrueCrypt ou semelhante.

Não uso Git nem SVN nos meus projectos pessoais porque sou o único a mexer neles e o PHPStorm já guarda um histórico local das alterações efectuadas. Além disso tenho sempre todo o código documentado e a única utilidade do Git seria o backup, mas não é encriptado.

Prefiro assim ter o meu sistema em que copio regularmente ficheiros para discos externos que estão encriptados e guardo-os em locais físicos diferentes. Uso discos separados com o mesmo conteúdo para redundância, caso um falhe o outro continua operacional.

E como este blog também serve de uma forma de arquivo ou backup pessoal, partilho aqui o código caso seja necessário usar no futuro. Bastante útil quando estou fora de casa e basta uma rápida pesquisa no blog.

 
Copyright © 1985 - 2017 Eduardo Maio. Alguns direitos reservados.
eduardomaio.net - Às vezes mais valia ser Agricultor do que Programador
Ao navegar no blog eduardomaio.net está a concordar com os termos legais e de privacidade.