===== Exemplos combinando mv, cp, echo, tar com date ===== ==== Nível Básico ==== * **Combinar `cp` com `date` para fazer backups com timestamps:** - cp arquivo.txt arquivo_$(date +%Y%m%d_%H%M%S).txt - Copia o arquivo `arquivo.txt` e cria uma cópia com um nome que inclui a data e a hora atual, como `arquivo_20241012_145000.txt`. * **Combinar `mv` com `date` para renomear arquivos com timestamps:** - mv log.txt log_$(date +%Y%m%d).txt - Renomeia o arquivo `log.txt` para `log_20241012.txt`, utilizando a data atual. * **Usar `echo` e `date` para criar logs com timestamps:** - echo "Backup iniciado em: $(date)" >> backup.log - Adiciona uma linha ao arquivo `backup.log` com o horário exato em que o backup foi iniciado. * **Combinar `tar` e `date` para criar um arquivo tar com a data atual no nome:** - tar -czvf backup_$(date +%Y%m%d).tar.gz /diretorio_para_backup - Compacta o diretório `/diretorio_para_backup` em um arquivo `.tar.gz`, adicionando a data atual no nome do arquivo (`backup_20241012.tar.gz`). ==== Nível Intermediário ==== * **Criar backups diários com `cp` e `date`:** - cp arquivo.txt /backup/arquivo_backup_$(date +%Y%m%d).txt - Copia o arquivo `arquivo.txt` para a pasta `/backup/`, adicionando um timestamp no nome do backup para diferenciá-lo por dia. * **Usar `echo` em um loop com `date` para gerar entradas de log contínuas:** - while true; do echo "Registro de log às: $(date)" >> log.txt; sleep 60; done - Gera uma entrada de log a cada 60 segundos com a data e hora atuais e adiciona ao arquivo `log.txt`. * **Criar múltiplos arquivos de backup em sequência com `tar` e `date`:** - for dir in dir1 dir2 dir3; do tar -czvf backup_${dir}_$(date +%Y%m%d).tar.gz $dir; done - Cria backups compactados (`.tar.gz`) dos diretórios `dir1`, `dir2`, e `dir3`, cada um com a data atual no nome do arquivo. * **Usar `date` em scripts para mover arquivos antigos com `mv`:** - mv arquivo_antigo.txt /backup/arquivo_antigo_$(date +%Y%m%d).txt - Move o arquivo `arquivo_antigo.txt` para a pasta `/backup/`, adicionando a data atual ao nome do arquivo. ==== Nível Avançado ==== * **Criar um arquivo de log com data e hora da execução:** - tar -czvf backup.tar.gz /diretorio_a_ser_compactado > log_$(date +%Y%m%d_%H%M%S).txt - Cria um arquivo tar e gera um arquivo de log com a data e hora exatas da execução. * **Mover arquivos automaticamente para um diretório com a data do dia:** - mv *.log /logs/$(date +%Y%m%d)/ - Move todos os arquivos `.log` para um diretório cujo nome é a data atual (ex.: `/logs/20241012/`). * **Adicionar timestamps a cada linha de um comando em execução (ex.: ping):** - ping -c 5 google.com | while read line; do echo "$(date +%H:%M:%S) $line"; done - Executa o comando `ping` e adiciona um timestamp à saída de cada linha. * **Arquivar logs antigos em um tar com data:** - tar -czvf logs_$(date +%Y%m%d).tar.gz *.log - Compacta todos os arquivos `.log` em um arquivo `.tar.gz`, adicionando a data atual ao nome. ==== Nível Especializado ==== * **Sincronizar a data e hora com um servidor NTP:** - sudo ntpdate ntp.servidor.com - Sincroniza a data e hora do sistema com um servidor NTP (Network Time Protocol). * **Usar `date` para gerar um arquivo de log com timestamps contínuos:** - while true; do echo "Log $(date +%Y-%m-%d\ %H:%M:%S)" >> log.txt; sleep 10; done - Cria um loop que adiciona uma entrada de log com timestamp a cada 10 segundos no arquivo `log.txt`. * **Calcular o tempo restante até uma data futura:** - data_futura=$(date -d "2024-12-31 23:59:59" +%s)
data_atual=$(date +%s)
echo "$(( ($data_futura - $data_atual) / 86400 )) dias restantes" - Calcula o número de dias restantes até o `31 de dezembro de 2024`. * **Gerar timestamps contínuos para uso em scripts de automação:** - for i in {1..5}; do echo "Processo $i iniciado em $(date +%Y-%m-%d\ %H:%M:%S)"; sleep 1; done - Gera timestamps contínuos com uma pausa de 1 segundo entre cada execução, ideal para monitoramento de processos.