Menu
Coddy logo textTech

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 registro de data e hora. Dessa forma, cada backup cria uma nova pasta em vez de substituir a anterior.

Modifique backup.sh para:

  1. Manter todo o código existente da lição anterior
  2. Substituir o nome estático backup_dir="backup" por um nome dinâmico que inclua um registro de data e hora
  3. Usar substituição de comando com o comando date para gerar um registro de data e hora no formato YYYYMMDD_HHMMSS
  4. A pasta de backup deve ser nomeada: backup_[timestamp]

O comando date com especificadores de formato cria registros 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 com um echo por linha funciona, mas há uma forma mais curta: um documento here direciona tudo até a palavra de fechamento diretamente para o arquivo.

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

As aspas ao redor de 'EOF' impedem que $variables sejam expandidas enquanto o arquivo é gravado, que é o que você quer quando o próprio script as utiliza.

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 registro 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
cat > backup.sh << 'EOF'
#!/bin/bash
read -p "Enter source directory: " source_dir
echo "Backing up: $source_dir"
backup_dir="backup"
mkdir -p "$backup_dir"
echo "Created backup folder: $backup_dir"
cp "$source_dir"/* "$backup_dir"
echo "Files copied successfully"
EOF
echo "documents" | bash backup.sh
ls backup

Todas as lições de Fundamentos

Pratique por conta própria: Playground de Terminal