Introdução
Imagine tirar uma foto todos os dias de uma planta em crescimento. Se você nomear todas as fotos como plant.jpg, a nova foto substituirá constantemente a antiga, e você perderá o histórico. Para manter todas elas, você precisa nomeá-las como plant_2023-01-01.jpg, plant_2023-01-02.jpg e assim por diante.
O mesmo problema acontece com os backups do sistema. Se você sempre gravar usando o mesmo nome de arquivo, cada novo backup poderá substituir o anterior e apagar seu histórico de recuperação.
Neste laboratório, você aprenderá a automatizar esse processo de nomeação. Backups com marcação de data e hora são uma prática muito comum no mundo real, porque os arquivos de backup só são úteis quando você consegue saber quando foram criados e manter várias gerações.
Você aprenderá a:
- Pedir ao Linux a data de hoje em um formato específico.
- Armazenar essa data em uma “caixa” (variável).
- Usar essa data para criar um arquivo de backup exclusivo, com marcação de data e hora.
Obter a data de hoje
Nesta etapa, você aprenderá a usar o comando date para formatar a data atual. Esse é o primeiro componente do nosso nome de arquivo dinâmico.
O comando date padrão exibe a data e a hora atuais em um formato longo e detalhado. Para nomes de arquivo, porém, normalmente queremos um formato limpo e ordenável, como YYYY-MM-DD. O Linux permite personalizar a saída usando o símbolo + seguido por um código de formato. O código %F é um atalho prático para “Full Date” (Ano-Mês-Dia).
Esse formato não serve apenas para deixar o nome mais bonito. Ele é útil na prática porque os arquivos ordenados alfabeticamente também ficam em ordem cronológica quando você usa YYYY-MM-DD.
Primeiro, confirme que você está na pasta do projeto:
cd ~/project
Agora, peça ao sistema a data no formato que queremos:
date +%F
Você deverá ver uma saída semelhante a 2023-10-27, mas com a data atual.
Para usar esse resultado em um nome de arquivo, precisamos capturá-lo. Podemos fazer isso usando a substituição de comandos. Pense nela como colocar um comando dentro de uma bolha $(...). O shell executa primeiro o comando dentro da bolha, obtém o resultado e substitui a bolha por esse texto.
A substituição de comandos é uma das ideias fundamentais do shell que começa a conectar o uso simples da linha de comando à automação. Ela permite transformar a saída de um comando em dados para outro comando.
Vamos armazenar essa data em uma variável. Uma variável é simplesmente uma caixa de armazenamento com um nome. Criaremos uma caixa chamada current_date e colocaremos nela a saída do nosso comando.
current_date=$(date +%F)
Importante: observe que não há espaços ao redor do sinal =. Essa é uma regra estrita do shell. variable = value falhará; variable=value funciona.
Agora, vamos verificar o conteúdo da nossa caixa para confirmar que a data está lá. Usamos o comando echo com um sinal $ antes do nome da variável para “desbloquear” a caixa:
echo $current_date
Se a data de hoje for exibida, você capturou a data corretamente!
Criar um arquivo de backup
Agora que armazenamos a data em uma variável, podemos usá-la para criar um arquivo de backup com um nome inteligente.
Preparamos um arquivo chamado project_plan.txt no seu diretório. Confirme que ele está lá:
ls -l project_plan.txt
Nosso objetivo é criar uma cópia desse arquivo chamada project_plan_YYYY-MM-DD.bak. Assim, a cópia ficará marcada com a data de hoje.
Usaremos o comando padrão cp (copiar). Porém, em vez de digitar a data manualmente, deixaremos que o shell a insira usando nossa variável $current_date.
Execute o comando a seguir:
cp project_plan.txt "project_plan_$current_date.bak"
O shell encontra $current_date dentro das aspas duplas e imediatamente o substitui pela data armazenada na variável, por exemplo, 2023-10-27, antes de executar o comando de cópia.
Isso é chamado de expansão de variáveis. O shell expande as variáveis antes de iniciar o comando cp. Por isso, o comando parece dinâmico, embora o próprio cp não entenda variáveis do shell.
Dica profissional: você também pode ignorar a etapa da variável e fazer tudo em uma única linha! Isso é extremamente comum em scripts de automação. Basta inserir diretamente a bolha de comando $(...) no comando cp:
cp project_plan.txt "project_plan_$(date +%F).bak"
Isso diz ao shell: “Execute o comando date, cole o resultado exatamente aqui e depois execute o comando de cópia.” Os dois métodos produzem exatamente o mesmo resultado.
Verificar o backup
Vamos confirmar se tudo funcionou. Agora devemos ver dois arquivos: o original e a cópia com a marcação de data e hora.
Liste os arquivos do diretório:
ls -l
Você deverá ver algo semelhante a isto:
-rw-rw-r-- 1 labex labex 65 Oct 27 10:00 project_plan.txt
-rw-rw-r-- 1 labex labex 65 Oct 27 10:05 project_plan_2023-10-27.bak
Observe que o novo arquivo tem a data incorporada ao nome.
Por fim, vamos confirmar que o conteúdo está correto. Podemos usar o comando cat para ler o novo arquivo. Como talvez não queiramos digitar a data completa novamente, podemos reutilizar o recurso de substituição de comandos:
cat project_plan_$(date +%F).bak
Você deverá ver o texto original:
Phase 1: Initialization
Phase 2: Development
Phase 3: Deployment
Sucesso! Você criou um backup perfeito, com marcação de data e hora. Se executar esse mesmo comando amanhã, ele criará um novo arquivo com a data de amanhã, mantendo seu histórico seguro e organizado.
Esse simples hábito de nomeação é surpreendentemente útil em muitos cenários. Muitos esquemas de rotação de backups começam exatamente com essa ideia: codificar o tempo no nome do arquivo para manter várias gerações em vez de substituir a cópia mais recente.
Resumo
Parabéns! Você aprendeu uma habilidade essencial de automação.
Neste laboratório, você aprendeu:
- Formatação da data: usar
date +%Fpara obter uma string de data adequada para computadores. - Substituição de comandos: usar
$(...)para enviar o resultado de um comando para outro. - Nomeação dinâmica: criar arquivos cujos nomes são baseados na data atual.
Esse truque aparentemente simples é a base de estratégias profissionais de backup. Agora você pode garantir que seus arquivos não sejam sobrescritos acidentalmente!



