Menu
Coddy logo textTech

Agregando una Marca de Tiempo

Parte de la sección Fundamentos del Journey de Terminal de Coddy. Lección 78 de 82.

challenge icon

Desafío

Fácil

Hagamos que el nombre de la carpeta de copias de seguridad sea único añadiendo una marca de tiempo. De esta forma, cada copia de seguridad crea una carpeta nueva en lugar de sobrescribir la anterior.

Modifica backup.sh para:

  1. Conservar todo el código existente de la lección anterior
  2. Reemplazar el nombre estático backup_dir="backup" por un nombre dinámico que incluya una marca de tiempo
  3. Usar la sustitución de comandos con el comando date para generar una marca de tiempo con el formato YYYYMMDD_HHMMSS
  4. La carpeta de copias de seguridad debe llamarse: backup_[timestamp]

El comando date con especificadores de formato crea marcas de tiempo:

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

Usa la sustitución de comandos $(command) para capturar esta salida en una variable:

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

Escribir un script de varias líneas con un echo por línea funciona, pero hay una forma más corta: un documento aquí envía todo hasta la palabra de cierre directamente al archivo.

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

Las comillas alrededor de 'EOF' evitan que $variables se expandan mientras se escribe el archivo, que es lo que quieres cuando el propio script las utiliza.

Ejecuta el script usando documents como entrada (echo "documents" | bash backup.sh). Tu salida debería verse así:

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

La marca de tiempo de tu salida será diferente según la fecha y hora actuales.

Pista: Añade timestamp=$(date +%Y%m%d_%H%M%S) antes de definir backup_dir; después, usa backup_dir="backup_$timestamp" para crear el nombre dinámico de la carpeta.

Pruébalo tú mismo

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 las lecciones de Fundamentos

Practica por tu cuenta: Playground de Terminal