Menu
CoddyTech

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 este modo, cada copia de seguridad crea una carpeta nueva en lugar de sobrescribir la anterior.

Reescribe backup.sh para que contenga el script completo y actualizado (ejecuta cat backup.sh para ver la versión de la lección anterior):

  1. Conserva todas las demás líneas del script de la lección anterior tal como están
  2. Reemplaza backup_dir="backup" estático por un nombre dinámico que incluya una marca de tiempo
  3. Usa 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 here envía directamente al archivo todo lo que aparece hasta la palabra de cierre.

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

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

Ejecuta el script con documents como entrada (echo "documents" | bash backup.sh). El resultado debería ser parecido a:

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

La marca de tiempo de tu resultado 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; luego usa backup_dir="backup_$timestamp" para crear el nombre dinámico de la carpeta.

Pruébalo tú mismo

Terminal
echo 'cp "$source_dir"/* "$backup_dir"' >> backup.sh
echo 'echo "Files copied successfully"' >> backup.sh
echo "documents" | bash backup.sh
ls backup

Todas las lecciones de Fundamentos

Practica por tu cuenta: Playground de Terminal