PowerShell Vault
На работе в локальной сети использовалась задача, которая перемещала старые, по долгу не использовавшиеся, файлы из главного файлового хранилища в резервное. Но так как организация являлась проектной, то старые файлы могли понадобиться в любое время.
Задача использовала простой скрипт с фильтрацией файлов по параметрам время создания и время изменения. Я чуть доработал скрипт и решил опубликовать его для других администраторов. Вдруг, пригодится. Только перед использованием прошу проверить скрипт в какой-нибудь песочнице.
Есть вероятность, что скрипт удалит все файлы в вашем файловом хранилище, из-за того, что автор может оказаться рукожопом! Поэтому, перед боевой задачей, проверьте скрипт в какой-нибудь песочнице. А кто хорошо разбирается в PowerShell - автор будет благодарен за оптимизацию и корректировку скрипта.
Параметры
-M-Mode- режим работы скрипта. По умолчанию'MV'.'CP'- копировать файлы из источника в хранилище.'MV'- перемещать файлы из источника в хранилище.'RM'- только удалять файлы из источника без копирования или перемещения куда-либо.
-SRC-Source- путь к директории откуда перемещать файлы. Например,-SRC 'C:\Data\Source'. По умолчанию:${PSScriptRoot}\Source.-DST-Vault- путь к директории куда перемещать файлы. Например,-DST 'C:\Data\Vault'. По умолчанию:${PSScriptRoot}\Vault.-CT-CreationTime- время создания файла в секундах. Например,-CT 5270400. По умолчанию:5270400(61 день).-WT-LastWriteTime- время изменения файла в секундах. Например,-WT 5270400. По умолчанию:${P_CreationTime}.-FS-FileSize- размер файла. Например,-FS '5kb'или-FS '12mb'. По умолчанию:'0kb'.-E-Exclude- путь к файлу с исключениями. Например,-E 'C:\Data\exclude.txt'. По умолчанию:${PSScriptRoot}\vault.exclude.txt.-L-Logs- путь к директории с журналами работы скрипта. Например,-L 'C:\Data\Logs'. По умолчанию:${PSScriptRoot}\Logs.-RD-RemoveDirs- удалять пустые каталоги.-O-Overwrite- перезаписать файлы в Vault.
Примеры
Запустить перемещение файлов из Source в Vault с сохранением структуры директорий:
Запустить перемещение файлов с временем создания и изменения от 10 дней (864000) из Source в Vault с сохранением структуры директорий:
Запустить перемещение файлов с временем создания и изменения от 10 дней (864000) и размером более 32 мегабайта (32mb) из Source в Vault с сохранением структуры директорий:
Запустить перемещение файлов с временем создания и изменения от 10 дней (864000), и с перезаписью файлов с одинаковыми названиями (-O) из Source в Vault с сохранением структуры директорий:
Параметр -O означает, что не нужно архивировать старый файл при перемещении нового с таким же названием. Старый файл в хранилище перезапишется новым.
Алгоритм работы
Скрипт создаёт хранилище старых файлов. Это, своего рода, аналог резервного копирования. При перемещении файлов из источника в хранилище, скрипт обрабатывает несколько заданных параметров и фильтров. Всё настроить можно под себя. По умолчанию, скрипт перемещает файлы из источника в хранилище, и если в хранилище уже имеется старый файл с названием кау у нового перемещаемого, то старый файл архивируется с меткой .[UnixTime].7z.
Для работы скрипта необходим архиватор 7-Zip, а конкретно его облегчённая версия 7za.exe с библиотеками из 7-Zip Extra. Скачать можно с официального сайта. После скачивания архива, файлы 7za.exe, 7za.dll и 7zxa.dll нужно разместить рядом со скриптом, или в любую дочернюю директорию. Скрипт сам найдёт путь к 7za.exe.
Источники:
2023-10-23
- Откорректирован скрипт
pwsh.vault.ps1.- Исправлены ошибки.
- Проведена оптимизация.
- Переделаны параметры.
2023-10-24
- Откорректирован скрипт
pwsh.vault.ps1.- Проведена оптимизация.
- Переделаны параметры.
- Изменена метка архивных файлов.
2023-11-19
- Удаление скрипта
pwsh.vault.ps1. - Добавление модуля
PowerShell Vault.