===== 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.