Adicionando um Timestamp
Parte da seção Fundamentos do Journey de Terminal da Coddy. Lição 78 de 82.
Desafio
FácilVamos 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):
- Mantenha todas as outras linhas do script da lição anterior como estão
- Substitua
backup_dir="backup", que é estático, por um nome dinâmico que inclua um carimbo de data e hora - Use substituição de comando com o comando
datepara gerar um carimbo de data e hora no formatoYYYYMMDD_HHMMSS - 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%SUse 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
echopor 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" EOFAs aspas em torno de
'EOF'impedem que$variablessejam 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 successfullyO 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 definirbackup_dire, em seguida, usebackup_dir="backup_$timestamp"para criar o nome dinâmico da pasta.
Experimente você mesmo
echo 'cp "$source_dir"/* "$backup_dir"' >> backup.sh
echo 'echo "Files copied successfully"' >> backup.sh
echo "documents" | bash backup.sh
ls backupTodas as lições de Fundamentos
4Diretórios
Criar um DiretórioCopiar um DiretórioMover e Renomear um DiretórioExcluir um DiretórioResumo - Operações com Diretórios7Conteúdo do Arquivo
Head e TailContagem de PalavrasComando SortComando UniqGrep BásicoGrep com FlagsResumo - Detetive de Texto10Projeto Analisador de Log
Visão Geral do ProjetoVisualizando o Arquivo de Log2Navegação
Imprimir Diretório de TrabalhoListar ArquivosMudar DiretórioCaminhos Absolutos vs RelativosDiretório Home e RaizResumo - Encontre Seu Caminho8Redirecionamento
Saída PadrãoSobrescrever em um ArquivoAnexar a um ArquivoEntrada PadrãoErro PadrãoRecapitulação - Construtor de Log11Permissões
Entendendo PermissõesLendo PermissõesChmod com NúmerosChmod com SímbolosPropriedade de ArquivosResumo - Trave Tudo14Projeto de Script de Backup
Visão Geral do ProjetoObtendo o Caminho de Origem3Arquivos
Criar um ArquivoLer um ArquivoCopiar um ArquivoMover e Renomear um ArquivoExcluir um ArquivoResumo - Operações com Arquivos6Curingas e Padrões
O Curinga AsteriscoO Curinga InterrogaçãoCuringas de ColchetesCombinando CuringasResumo - Operações Seletivas9Pipes
O Que é um PipeEncadeando Dois ComandosEncadeando Múltiplos ComandosPipe com GrepResumo - Pipeline de DadosPratique por conta própria: Playground de Terminal