Этот скрипт перемещает файлы из исходной директории в архивную папку, вместо их удаления. Это позволяет сохранить копию файлов на случай необходимости восстановления.
Скрипт
#!/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 для исходной и архивной директорий на актуальные.
Дополнительные соображения
- Резервное копирование: Этот скрипт выполняет не полное резервное копирование, а только перемещает файлы по определенному шаблону. Рекомендуется использовать специализированные инструменты для резервного копирования.
- Перезапись файлов: Скрипт перезаписывает файлы с одинаковыми именами в архивной директории. Если вам нужно сохранять историю версий, можно использовать другие методы, например, создание архивов с разными именами на основе текущей даты и времени.
- Проверка на ошибки: Добавьте логирование и обработку ошибок, чтобы скрипт был более надежным.
- Более сложные сценарии: Можно добавить опции для интерактивного выбора файлов для перемещения, исключения определенных файлов или директорий, а также другие настройки.