Menu
CoddyTech

Добавление временной метки

Часть раздела Основы путешествия по Terminal на Coddy. Урок 78 из 82.

challenge icon

Задание

Легко

Давайте сделаем имя папки резервной копии уникальным, добавив временную метку. Так при каждом создании резервной копии будет создаваться новая папка, а не перезаписываться предыдущая.

Перепишите backup.sh, чтобы в нём содержался полный обновлённый скрипт (выполните cat backup.sh, чтобы посмотреть версию из предыдущего урока):

  1. Оставьте все остальные строки скрипта из предыдущего урока без изменений
  2. Замените статическое значение backup_dir="backup" динамическим именем, включающим временную метку
  3. Используйте подстановку команды с командой date, чтобы сгенерировать временную метку в формате YYYYMMDD_HHMMSS
  4. Папка резервной копии должна называться: backup_[timestamp]

Команда date со спецификаторами формата создаёт временные метки:

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

Используйте подстановку команды $(command), чтобы сохранить этот вывод в переменной:

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

Записывать многострочный скрипт, используя по одной команде echo на строку, можно, но есть способ короче: here-документ передаёт всё содержимое до завершающего слова прямо в файл.

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

Кавычки вокруг 'EOF' не позволяют раскрывать $variables при записи файла — именно это и нужно, когда сам скрипт их использует.

Запустите скрипт, передав documents в качестве входных данных (echo "documents" | bash backup.sh). Вывод должен выглядеть так:

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

Временная метка в вашем выводе будет отличаться в зависимости от текущих даты и времени.

Подсказка: Добавьте timestamp=$(date +%Y%m%d_%H%M%S) перед определением backup_dir, затем используйте backup_dir="backup_$timestamp", чтобы создать динамическое имя папки.

Попробуйте сами

Терминал
echo 'cp "$source_dir"/* "$backup_dir"' >> backup.sh
echo 'echo "Files copied successfully"' >> backup.sh
echo "documents" | bash backup.sh
ls backup

Все уроки раздела Основы

Потренируйтесь самостоятельно: Песочница Terminal