Menu
Coddy logo textTech

Aggiungere un timestamp

Fa parte della sezione Fondamenti del percorso Terminal di Coddy. Lezione 78 di 82.

challenge icon

Sfida

Facile

Rendiamo univoco il nome della cartella di backup aggiungendo un timestamp. In questo modo, ogni backup crea una nuova cartella invece di sovrascrivere quella precedente.

Modifica backup.sh per:

  1. Mantenere tutto il codice esistente della lezione precedente
  2. Sostituire backup_dir="backup" con un nome dinamico che includa un timestamp
  3. Usare la sostituzione di comando con il comando date per generare un timestamp nel formato YYYYMMDD_HHMMSS
  4. La cartella di backup deve chiamarsi: backup_[timestamp]

Il comando date con gli specificatori di formato crea i timestamp:

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

Usa la sostituzione di comando $(command) per acquisire questo output in una variabile:

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

Scrivere uno script su più righe con un echo per riga funziona, ma c'è un modo più breve: un here document invia direttamente al file tutto il contenuto fino alla parola di chiusura.

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

Le virgolette attorno a 'EOF' impediscono l'espansione di $variables mentre il file viene scritto: è ciò che serve quando lo script stesso li usa.

Esegui lo script usando documents come input (echo "documents" | bash backup.sh). L'output dovrebbe essere simile a:

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

Il timestamp nell'output sarà diverso a seconda della data e dell'ora correnti.

Suggerimento: Aggiungi timestamp=$(date +%Y%m%d_%H%M%S) prima di definire backup_dir, poi usa backup_dir="backup_$timestamp" per creare il nome dinamico della cartella.

Provalo tu

Terminale
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

Tutte le lezioni di Fondamenti

Esercitati da solo: Playground Terminal