Menu
CoddyTech

Adicionando um Timestamp

Parte da seção Fundamentos do Journey de Terminal da Coddy. Lição 78 de 82.

challenge icon

Desafio

Fácil

Vamos tornar o nome da pasta de backup único adicionando um carimbo de data e hora. Assim, cada backup cria uma nova pasta em vez de sobrescrever a anterior.

Reescreva backup.sh para que contenha o script completo e atualizado (execute cat backup.sh para ver a versão da lição anterior):

  1. Mantenha todas as outras linhas do script da lição anterior como estão
  2. Substitua backup_dir="backup", que é estático, por um nome dinâmico que inclua um carimbo de data e hora
  3. Use substituição de comando com o comando date para gerar um carimbo de data e hora no formato YYYYMMDD_HHMMSS
  4. A pasta de backup deve se chamar: backup_[timestamp]

O comando date com especificadores de formato cria carimbos de data e hora:

date +%Y%m%d_%H%M%S

Use a substituição de comando $(command) para capturar essa saída em uma variável:

timestamp=$(date +%Y%m%d_%H%M%S)
backup_dir="backup_$timestamp"

Escrever um script de várias linhas usando um echo por linha funciona, mas há uma maneira mais curta: um documento here envia tudo até a palavra de fechamento diretamente para o arquivo.

cat > script.sh << 'EOF'
#!/bin/bash
echo "hello"
EOF

As aspas em torno de 'EOF' impedem que $variables sejam expandidas enquanto o arquivo é escrito, que é o que você quer quando o próprio script as usa.

Execute o script com documents como entrada (echo "documents" | bash backup.sh). Sua saída deve ser semelhante a:

Backing up: documents
Created backup folder: backup_20240115_143052
Files copied successfully

O carimbo de data e hora na sua saída será diferente, dependendo da data e hora atuais.

Dica: Adicione timestamp=$(date +%Y%m%d_%H%M%S) antes de definir backup_dir e, em seguida, use backup_dir="backup_$timestamp" para criar o nome dinâmico da pasta.

Experimente você mesmo

Terminal
echo 'cp "$source_dir"/* "$backup_dir"' >> backup.sh
echo 'echo "Files copied successfully"' >> backup.sh
echo "documents" | bash backup.sh
ls backup

Todas as lições de Fundamentos

Pratique por conta própria: Playground de Terminal