Этот скрипт перемещает файлы из исходной директории в архивную папку, вместо их удаления. Это позволяет сохранить копию файлов на случай необходимости восстановления.

Скрипт

#!/bin/bash

  # Определение параметров
  SOURCE_DIRECTORY="/path/to/source/directory"
  ARCHIVE_DIRECTORY="/path/to/archive/directory"
  PATTERN="*.txt"  # Шаблон файлов для перемещения

  # Проверка существования директорий
  if [ ! -d "$SOURCE_DIRECTORY" ]; then
    echo "Ошибка: Исходная директория '$SOURCE_DIRECTORY' не существует."
    exit 1
  fi

  if [ ! -d "$ARCHIVE_DIRECTORY" ]; then
    echo "Ошибка: Архивную директорию '$ARCHIVE_DIRECTORY' не существует."
    exit 1
  fi

  # Получение текущей даты для имени поддиректории в архиве
  ARCHIVE_DATE=$(date +%Y%m%d)
  ARCHIVE_PATH="$ARCHIVE_DIRECTORY/$ARCHIVE_DATE"

  # Создание поддиректории в архивной папке с текущей датой
  mkdir -p "$ARCHIVE_PATH"

  # Перемещение файлов в архивную директорию
  find "$SOURCE_DIRECTORY" -name "$PATTERN" -print0 | while IFS= read -r -d $'\0' file; do
    echo "Перемещение: $file -> $ARCHIVE_PATH"
    mv -f "$file" "$ARCHIVE_PATH"
  done

  echo "Перемещение файлов завершено."
  

Объяснение кода:

  • `SOURCE_DIRECTORY="/path/to/source/directory"`, `ARCHIVE_DIRECTORY="/path/to/archive/directory"`, `PATTERN="*.txt"`: Определение исходной директории, директории архива и шаблона файлов. **Обязательно замените "/path/to/source/directory" и "/path/to/archive/directory" на реальные пути.**
  • `if [ ! -d "$SOURCE_DIRECTORY" ]; then ... fi`: Проверка существования исходной директории.
  • `if [ ! -d "$ARCHIVE_DIRECTORY" ]; then ... fi`: Проверка существования директории архива.
  • `ARCHIVE_DATE=$(date +%Y%m%d)`: Получение текущей даты в формате ГГГГММДД.
  • `ARCHIVE_PATH="$ARCHIVE_DIRECTORY/$ARCHIVE_DATE"`: Формирование пути к поддиректории в архиве.
  • `mkdir -p "$ARCHIVE_PATH"`: Создание поддиректории в архиве с текущей датой. Флаг `-p` создает все необходимые родительские директории.
  • `find "$SOURCE_DIRECTORY" -name "$PATTERN" -print0 | while IFS= read -r -d $'\0' file; do ... done`: Цикл по каждому найденному файлу.
  • `echo "Перемещение: $file -> $ARCHIVE_PATH"`: Вывод информации о перемещении файла.
  • `mv -f "$file" "$ARCHIVE_PATH"`: Перемещение файла в архивную директорию. Флаг `-f` заставляет перезаписать существующие файлы в архиве. **Будьте осторожны при использовании `-f`, так как это может привести к потере данных.**
  • `echo "Перемещение файлов завершено."`: Сообщение об окончании работы скрипта.

Использование скрипта

Для запуска скрипта выполните:

./your_script_name.sh

Перед запуском скрипта замените placeholders для исходной и архивной директорий на актуальные.

Дополнительные соображения

  • Резервное копирование: Этот скрипт выполняет не полное резервное копирование, а только перемещает файлы по определенному шаблону. Рекомендуется использовать специализированные инструменты для резервного копирования.
  • Перезапись файлов: Скрипт перезаписывает файлы с одинаковыми именами в архивной директории. Если вам нужно сохранять историю версий, можно использовать другие методы, например, создание архивов с разными именами на основе текущей даты и времени.
  • Проверка на ошибки: Добавьте логирование и обработку ошибок, чтобы скрипт был более надежным.
  • Более сложные сценарии: Можно добавить опции для интерактивного выбора файлов для перемещения, исключения определенных файлов или директорий, а также другие настройки.