как узнать кто удалил файл на компьютере
Как узнать кто удалил файл на компьютере
Этот форум закрыт. Спасибо за участие!
Лучший отвечающий
Вопрос
Постараюсь как можно точнее описать проблему.
Есть сервер, на котором стоит Windows 2003 Standart лицензионный. Домены не используются, только рабочая группа. На сервере есть росшариная папка в которой хранятся документы разных отделов предприятия. В эту папку по сети все входят по одному логину и паролю (ну так легче запомнить сотрудникам). Пару дней назад начали пропадать папки, тоесть кто-то их удаляет постоянно.
Я делаю копии автоматически каждый день всего каталога. Но нужно найти человека который удаляет папки.
В логах Security видно например такое:
Event Type: Success Audit
Event Source: Security
Event Category: Object Access
Event ID: 560
Date: 15.12.2011
Time: 12:09:08
User: PROXY\bib
Computer: PROXY
Description:
Object Open:
Object Server: Security
Object Type: File
Object Name: F:\OBMIN\Документы\тестовый файл на удаление.txt
Handle ID: 2156
Operation ID: <0,26707543>
Process ID: 4
Image File Name:
Primary User Name: PROXY$
Primary Domain: LIBRARY
Primary Logon ID: (0x0,0x3E7)
Client User Name: Administrator
Client Domain: PROXY
Client Logon ID: (0x0,0x18DD64B)
Accesses: DELETE
ReadAttributes
Privileges: SeBackupPrivilege
SeRestorePrivilege
Restricted Sid Count: 0
Access Mask: 0x10080
Я специально удалил файл тестовый файл на удаление.txt с другого компьютера в сети что б проверить покажет ли оно кто удалил, оно показало что только пользователь bib. А мне нужно, что б оно показало имя компьютера с которого было удаление, как например в таком логе:
В таком логе видно и имя компьютера и даже IP адресс его.
Простая система аудита удаления файлов и папок для Windows Server
Любой администратор Windows сталкивался с ситуацией, когда разъяренные пользователи хотят узнать, кто именно удалил мега важный файл с годовым отчетом в общей папке на файловом сервере. Эту информацию можно получить только при условии ведения аудита удаления файлов и папок на файловом сервере, иначе останется только восстановить удаленный файл из резервной копии (а вы их уже делаете?) и развести руками.
Но, даже при включенном аудите удаления файлов, найти что-то в логах бывает проблематично. Во-первых, найти нужную запись среди тысячи событий довольно сложно (в Windows отсутствуют вменяемые средства поиска интересующего события с возможностью гибкой фильтрации), а во-вторых, если файл был удален давно, это событие может просто отсутствовать в журнале, т.к. было перезатерто более новыми.
В этой статье мы покажем пример организации на встроенных средствах Windows системы аудита удаления файлов и папок в общем сетевом каталоге (файловом сервере) с записью событий в отдельную базу данных на MySQL.
Благодаря наличию БД с информацией обо всех удаленных файлах администратор сможет дать ответы на вопросы:
В первую очередь на файловом сервере Windows нужно включить аудит событий, обеспечивающий запись информации об удалении файлов в журнал системы. Эту процедуру мы уже рассматривали в статье Аудит доступа к файлам и папкам в Windows.
Совет. Аудит удаления файлов в конкретной папке можно включить и через PowerShell:
При успешном удалении файла в журнале безопасности системы появляется событие Event ID 4663 от источника Microsoft Windows security auditing. В описании события есть информация об имени удаленного файла, учетной записи из-под которой было выполнено удаление и имени процесса.
Итак, интересующие нас события пишутся в журнал, настала пора создать на сервере MySQL таблицу, состоящую из следующих полей:
MySQL запрос на создание такой таблицы будет выглядеть так:
CREATE TABLE track_del (id INT NOT NULL AUTO_INCREMENT, server VARCHAR(100), file_name VARCHAR(255), dt_time DATETIME, user_name VARCHAR(100), PRIMARY KEY (ID));
Скрипт сбора информации из журнала событий. Мы фильтруем журнал по событию с ID 4663 за текущий день
Следующий скрипт запишет полученные данные в БД MySQL на удаленном сервере:
Теперь, чтобы узнать, кто удалил файл «document1 — Copy.DOC», достаточно в консоли PowerShell выполнить следующий скрипт.
В консоли получаем имя пользователя и время удаления файла.
При желании по аналогии можно реагировать простую веб страницу на php для получения информации о виновниках удаления файлов в более удобном виде. Задача решается силами любого php программиста за 1-2 часа.
Итак, мы предложили идею и некий общий каркас системы аудита и хранения информации об удаленных файлах в сетевых шарах, при желании ее с лёгкостью можно будет модифицировать под ваши нужды.
Аудит удаления и доступа к файлам и запись событий в лог-файл средствами Powershell
Начнем.
Для начала включим к групповых политиках возможность аудита доступа к файлам и папкам.
Локальные политики безопасности->Конфигурация расширенной политики безопасности->Доступ к объектам
Включим «Аудит файловой системы» на успех и отказ.
После этого на необходимые нам папки необходимо настроить аудит.
Проходим в свойства папки общего доступа на файловом сервере, переходим в закладку «Безопасность», жмем «Дополнительно», переходим в закладку «Аудит», жмем «Изменить» и «Добавить». Выбираем пользователей для которых вести аудит. Рекомендую выбрать «Все», иначе бессмысленно. Уровень применения «Для этой папки и ее подпапок и файлов».
Выбираем действия над которыми мы хотим вести аудит. Я выбрал «Создание файлов/дозапись данных» Успех/Отказ, «Создание папок/дозапись данных» Успех/отказ, Удаление подпапок и файлов и просто удаление, так же на Успех/Отказ.
Жмем ОК. Ждем применения политик аудита на все файлы. После этого в журнале событий безопасности, будет появляться очень много событий доступа к файлам и папкам. Количество событий прямопропорционально зависит от количества работающих пользователей с общим ресурсом, и, конечно же, от активности использования.
Итак, данные мы уже имеем в логах, остается только их оттуда вытащить, и только те, которые нас интересуют, без лишней «воды». После этого акурратно построчно занесем наши данные в текстовый файл разделяя данные симовлами табуляции, чтобы в дальнейшем, к примеру, открыть их табличным редактором.
А теперь очень интересный скрипт.
Скрипт пишет лог об удаленных файлах.
Как оказалось при удалении файлов и удалении дескрипторов создается одно и тоже событие в логе, под При этом в теле сообщения могут быть разные значения «Операции доступа»: Запись данных (или добавление файла), DELETE и т.д.
Конечно же нас интересует операция DELETE. Но и это еще не все. Самое интересное, то что, при обычном переименовании файла создается 2 события с ID 4663, первое с Операцией доступа: DELETE, а второе с операцией: Запись данных (или добавление файла). Значит если просто отбирать 4663 то мы будем иметь очень много недостоверной информации: куда попадут файлы и удаленные и просто переименованные.
Однако мной было замечено, что при явном удалении файла создается еще одно событие с ID 4660, в котором, если внимательно изучить тело сообщения, содержится имя пользователя и еще много всякой служебной информации, но нет имени файла. Зато есть код дескриптора.
Однако предшествующим данному событию было событие с ID 4663. Где как раз таки и указывается и имя файла, и имя пользователя и время, и операция как не странно там DELETE. И самое главное там имеется номер дескриптора, который соответствует номеру дескриптора из события выше (4660, помните? которое создается при явном удалении файла). Значит теперь, чтобы точно знать какие файлы удалены, необходимо просто найти все события с ID 4660, а так же предшествующие каждому этому событию, событие с кодом 4663, в котором будет содержаться номер нужного дескриптора.
Эти 2 события генерируются одновременно при удалении файла, но записываются последовательно, сначала 4663, потом 4660. При этом их порядковые номера различаются на один. У 4660 порядковый номер на единицу больше чем у 4663.
Именно по этому свойству и ищется нужное событие.
Т.е. не записываем информацию об удаленных временных файлах (.*tmp), файлах блокировок документов MS Office (.*lock), и временных файлах MS Office (.*
Для лога удаленных файлов я использую схему: один файл на один месяц с именем содержащим номер месяца и год). Т.к. удаленных файлов в разы меньше чем файлов к которым был доступ.
В итоге вместо бесконечного «рытья» логов в поисках правды, можно открыть лог-файл любым табличным редактором и просмотреть нужные нам данные по пользователю или файлу.
Рекомендации
Вам придется самим определить время в течении которого вы будете искать нужные события. Чем больше период, тем дольше ищет. Все зависит от производительности сервера. Если слабенький — то начните с 10 минут. Посмотрите, как быстро отработает. Если дольше 10 минут, то либо увеличьте еще, вдруг поможет, либо наоборот уменьшите период до 5 минут.
Как найти кто из пользователей удалил файлы с расшареной папки
Всем здравствуйте кто будет это читать. Сложилась такая ситуация, из локальной расшареной папки были удалены документы, есть предположение с какого пк это было сделано, Как можно их восстановить, либо просто доказать что это было сделано именно с этого пк и именно с этой учетки, документы не такие важные, а вот узнать хотелось бы (со стороны сервера так же можно и со стороны ПК пользователя).
По вариантам как это можно было сделать:
1) теневые копии у нас отключены, места столько нет на восстановления
2) функция аудита вообще вырезана из серверной ОС, потому что он ее не потянет
3) единственный способ нашел это папка reseit вроде или как она пишется там
4) на сторонее ПО бюджет нам не выделят.
используется: windows server 2003, и windows 7
По любому винда пишет какие ты места посещал по умолчанию
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Получить список пользователей расшареной папки
Здравствуйте форумчане. Создал программу получающую список расшаренных папок(«Общий доступ. «) на.
Я удалил файлы из папки WinSxS
Вообщем, я немного дурачёк. Я удалил файлы из папки winsxs. Это повлекло за собой череду проблем.
Как для пользователей домена скрыть файлы и папки, находящиеся на диске C, панель управления и её элементы?
Добрый день все уважаемые, как возможно реализовать следующую задумку с GPO, а именно: Для.
Разрешение на использование расшареной папки только некоторым пользователям в сети
Дано : Сервер 2008 с удаленным подключением и 22 пользователя удаленки. 10 ПК в офисе с общим.
Аудит удаления файлов в сетевой папке на Windows Server
С помощью аудита событий доступа к объектам файловой системы вы можете определить конкретного пользователя, который создал, удалил или изменил определенный файл. В этой статье мы покажем, как настроить аудит событий удаления объектов в общей сетевой папке на Windows Server 2016. После настройки аудита, вы можете с помощью информации в журнале событий найти пользователя, который удалил на файловом сервере.
Включаем политику аудита доступа к файлам и папкам в Windows
По умолчанию в Windows Server не включен аудит событий доступа к объектам на файловой системе. Вы можете включить и настроить аудит событий с помощью групповой политики. Если нужно включить политики аудита на нескольких серверах или компьютера, можно использовать доменные GPO (настраиваются с помощью консоли управления gpmc.msc). Если нужно настроить аудит только на одном сервере, можно воспользоваться локальной групповой политикой.
Настройка аудита событий удаления файлов из конкретной папки
Если появится сообщение You must be an administrator or have been given the appropriate privileges to view the audit properties of this object, нажмите кнопку Continue.
Затем нажмите кнопку Add чтобы указать пользователя или группу, для которых нужно записывать все события аудита. Если вы хотите отслеживать события для всех пользователей, укажите группу Everyone.
Затем нужно указать использование каких разрешений доступа к объекту нужно записывать в лог. Чтобы сохранять в Event Log только события удаления файлов, нажмите кнопку Show advanced permissions. В списке событий оставьте аудит только для событий удаления папок и файлов — Delete и Delete subfolders and files.
Откройте любой их оставшихся событий в Event Viewer. Как вы видите, в нем есть информация об имени удаленного файла и учетной записи пользователя, который удалил файл.
После настройки аудита, найдите в журнале Security вы сможете найти с:
Запись событий удаления файлов в SQL базу (MySQL/MSSQL)
Если после включения аудита удаления файлов в сетевой папке, вы видите в журнале много событий, найти что-то в логах бывает проблематично. Во-первых, найти нужную запись среди тысячи событий довольно сложно (в Windows отсутствуют вменяемые средства поиска интересующего события с возможностью гибкой фильтрации), а во-вторых, если файл был удален давно, это событие может просто отсутствовать в журнале, т.к. было перезатерто более новыми.
Вы можете записывать все нужные событий в отдельную SQL базу данных. Для хранения событий можно использовать Microsoft SQL Server, Elasticsearch или MySQL/MariaDB.
В этом примере мы покажем, как записывать события аудита в отдельную таблицу БД на сервере MySQL. Формат таблицы:
MySQL запрос на создание такой таблицы будет выглядеть так:
CREATE TABLE track_del (id INT NOT NULL AUTO_INCREMENT, server VARCHAR(100), file_name VARCHAR(255), dt_time DATETIME, user_name VARCHAR(100), PRIMARY KEY (ID));
Если вы хотите использовать Microsoft SQL, обратите внимание на статью “Как выполнить запрос к MSSQL Server из скрипта PowerShell?”.
Для получения событий с EventID 4663 из журнала Security за текущий день можно использовать такой PowerShell скрипт:
Следующий PowerShell скрипт запишет полученные данные в БД MySQL на удаленном сервере:
Теперь, чтобы узнать, кто удалил файл «document1 — Copy.DOC». Достаточно в консоли PowerShell выполнить следующий скрипт.
В результате в консоли PS появится имя пользователя и время удаления файла.
Можно создать реагировать простую веб страницу на php для получения информации о событиях удаления файлов в более удобном виде. Задача решается силами любого php программиста за 1-2 часа.
Запись информации о событиях удаления файлов в текстовый файл
Если вы не хотите вести отдельную БД, можно сохранять события аудита удалений файлов в текстовый лог файл. Воспользуйтесь таким PowerShell скриптом:
Итак, мы предложили идею и некий общий каркас системы аудита и хранения информации об удаленных файлах в сетевых шарах, при желании ее с лёгкостью можно будет модифицировать под ваши нужды.
Предполагается, видимо, что MySQL уже установлен и настроен?
100 лет уже не имел дела с «мускулом»…
Да, конечно. Причем он даже под Windows ставится несколькими кликами.
В общем-то код и всю технику можно легко адаптировать и под MSSql, но с точки зрения зрения легкости, отдаю предпочтению мусклу.
Извини если туплю, но из статьи НЕ очевтдно
куда засунуть и как запустить скрипт
«Скрипт сбора информации из журнала событий. Мы фильтруем журнал по событию с ID 4663 за текущий день»
а за ним все остальные
Подразумевал, что раз в сутки планировщик (допустим в 23:58) запускает powershell скрипт, который получает все события за прошедшие сутки и пишет из в базу.
Т.е. в создаем задание планировщика, которое запускет программу C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe с аргументом в виде имени файла со вторым скриптом C:\myscripts\WriteDelEventDB.PS1
«Скрипт сбора информации из журнала событий» — это просто пример работы с журналом событий, фильтрации и получения значений определенных полей. Он используется внутри следующего скрипта.
Что-то пошло не так. Или — что я сделал не так?
На первой же строке скрипта вылезает матершина:
(все делается под одним из Domain Admin аккаунтов)
+ CategoryInfo : NotSpecified: (:) [Get-WinEvent], Exception
+ FullyQualifiedErrorId : LogInfoUnavailable,Microsoft.PowerShell.Commands.GetWinEventCommand
+ CategoryInfo : ObjectNotFound: (Security:String) [Get-WinEvent], Exception
+ FullyQualifiedErrorId : NoMatchingLogsFound,Microsoft.PowerShell.Commands.GetWinEventCommand
+ CategoryInfo : NotSpecified: (:) [Get-WinEvent], EventLogException
+ FullyQualifiedErrorId : System.Diagnostics.Eventing.Reader.EventLogException,Microsoft.Power
Shell.Commands.GetWinEventCommand
Пардону просим
Run As Administrator забыл сделать Ж-)
Здравствуйте, отличная статья. Решал подобную задачу для сбора статистики с KMS сервера, но использовал связку PS и MSSQL Express. Через год работы наткнулся на проблему, что превысил лимит базы данных в 10Гб, в итоге сделал ротацию данных в БД Наверное в вашем случае тоже было бы неплохо предусмотреть удаление старых данных? Могу поделиться наработками, если интересно. 🙂
Приветствую,
Насчет удаления старых данных пока не думал. Сложно оценить насколько будет большой база и за какой период нужна информация. Здесь больше идея рассматривается, какие-то выводы и усовершенствования можно делать только после опыта более продолжительного использования.
А инфой конечно, делитесь! Можно оформить отдельной статьей, думаю тема сбора и хранения статистики использования KMS сервера будет многим интересна.
Мой емайл есть на странице https://winitpro.ru/index.php/o-bloge/
Странно как-то себя MySQL повел ….
Поставил, для удобства, Navicat Premium Enterprise 11.2.4
)
и получается как-то странно
если делать, этим Navicat, Export всей таблицы из базы, то в поле file_name попадает имя файла целиком (правда отделенное пробелом почему-то от всего остального)
«id» «server» «file_name» «dt_time» «user_name»
«1440» «AUDITTEST» «DeviceHarddiskVolume2TEST 0000.txt» «5.5.2016 12:12:24» «name»
а когда делаешь select … то имя файла обрезается до полного пути до него
SELECT track_del.file_name,track_del.dt_time,track_del.user_name FROM track_del
а на выходе
file_name dt_time user_name
DeviceHarddiskVolume2TEST 2016-05-05 12:12:24 name
Если присмотреться, то в поле file_name попадается пробел. И, походу, по нему и режется. А пока оно так себя ведет, дальше ничего не работает. То есть невозможно сделать LIKE по значению, которое не показывается
Починил.
В скрипте, который заполняет таблицу в БД, вставил строку, которая меняет в имени файла, получаемого из Security Even Log’a все ‘\’ на ‘|’ Вот здесь:
После этого имя файла перестало «теряться» и попадает в БД как надо 🙂
И потом, слегка «доработал» скрипт, который выдает результат. Мне плказалось так и красивее, и правильнее. Добавлен вывод имени файла с полным путем. с обратной заменой ‘|’ на ‘\’
А ведь это был _очень_неприятный баг MySQL, на самом деле
Файл, на котором я «тренировался», я назвал 00000.txt (5 нулей) и, в итоге, в базу из Event Log’a попадало вот что
DeviceHarddiskVolume2TEST 0000.txt
То есть при выполнении INSERT MySQL «выгрызал» все символы ‘\’ и, более того делал из подстроки 0000.txt такое вот «[SPACE]0000.txt» типа пытался «интерпретировать по своему»?
А после того как я, предварительно, заменял все ‘\’ на ‘|’ — все проходило как надо
Дмитрий, думаю не лишним будет или упомянуть об этой «особенности» или поправить скрипт, который заносит имя файла в таблицу БД.
Коллеги кто нибуть настраивал данную возможность с помощью SCOM?
Есть ли информация по данному вопросу,может быть кто то уже имел опыт,заранее спасибо за ответ.
Странная команда в скрите
«Следующий скрипт запишет полученные данные в БД MySQL на удаленном сервере:»
вот эта
PowerShell ругается на нее. Наверное и правильно. Ведь закрывается то, что не открывалось.
А для Win2k как сделать подобное?
В нем аудит естьт, политика безопасности — есть, а события 4663 не выдается (((
Может кто сталкивался?
ID события скорее всего другие, да и не факт что PowerShell вообще заведется на W2k..
ЗЫ. Закапывайте мамонта
MySQL запрос на создание такой таблицы будет выглядеть так:
CREATE TABLE track_del (id INT NOT NULL AUTO_INCREMENT, server VARCHAR(100), file_name VARCHAR(255), dt_time DATETIME, user_name VARCHAR(100), PRIMARY KEY (ID));
результат.
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ‘AUTO_INCREMENT’.
Здраствуйте. Никогда раньше ни делал ничего подобного. Со второго раза вроде получилось. У меня вопрос в событии у меня есть строка » 192.168.201.153″ как добавть дополнительный столбец в таблицу и как в него записывать Ip адресс?
добрый день.
собран кластер на WS2016.
Есть CSV. Эту шару я и хочу логировать. Делаю все по инструкции, но когда что-либо оттуда удаляю, нет записи в логах Security.
Был ли опыт проведения аудита на кластерной шаре?
Спасибо. Хорошая статья.
Под рукой такой конфигурации нет. Могу посоветовать
1) проверить, что политики аудита применяются для обычных шар (записи в логе появляются).
2) в случае CSV возможно стоит проверять все логи на всех нодах кластера
1) работает, идеально.
2) проверяю на всех, к сожалению нет.
Отличный каркас для работы с логами. После лёгкой косметической допилки всё полетело на MSSQL Express 2014 ADV (ставить на сервер вторую СУБД смысла нет). Бага с чир-символом в этой версии MSSQL нет. Всё загружается и выгружается чётко. 🙂
Спасибо автору))
Спасибо! Очень полезная вещь!
Пожалуйста подскажите, как быть с кириллицей в имени каталогов и файлов? В таблице вместо кириллицы знаки вопроса «…. |. docx».
Для правильного сохранения кириллицы добавьте в конец строки «charset=utf8»
Должно получится так
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@
Отлично! Спасибо за полезную инфу!
Доброго времени суток. Попробовал, все равно «. |. pdf» 🙁
Спасибо огромное. Разобрался. Нужно было сменить кодировку в самой БД на utf8_unicode_ci.
А что для визуализации данных и логов используете (графические дашборды, отчеты)?
С Elasticsearch обычно используют Kibana. А что у graylog как аналог?
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Какая ОС и версия PowerShell?
Windows Server 2012 R2 6.3.9600.18969 64-разрядная
Version PS : 5.1.14409.1018
Странно у меня в такой же конфигурации все работает. Windows Server случайно не русская? Я такую принципиально не пользую, только eng.
Нет. Проверил в 10-ке (правда «русской») — тоже такая же «петрушка»
Ну вот у меня код работает даже в русской Windows….
Запускаете в PowerShell ISE под админом?
Да, под админом
Не работает
А если удалять файлы с помощью Shift+DEL, то регистрируется только событие с id 4659. По крайней мере у меня на Windows Server 2012 так.
$ ). Причём в качестве пользователя стоит имя сервера.
Ещё есть удаления целых каталогов (?!), тоже с именем сервера. В поле ProzessName стоит C:\Windows\System32\dfsrs.exe
Есть и удаления от конкретных пользователей, но от них идут несколько удалений одних и тех же файлов — это вероятно результаты неоднократных редактирований того же файла… При этом поле ProzessName вообще пустое!
Колеги а как очистить журнал после того, как витянул данные с журнала?
Я же буду на постой дозаписывать то, что уже есть.
Нужно искать пару : id 4663 а потом 4660 с аналогичным кодом дескриптора в двух событиях. Тогда это будет реальное удаление.
https://docs.microsoft.com/en-us/windows/security/threat-protection/auditing/event-4660
Доброго времени, уважаемые коллеги!
У меня сервер 2008. Сделал всё как тут написано, получилось на ура. Но хотелось бы задать вопрос. В событиях по коду 4663 регистрируется только пользователь и действия с файлом, которые он инициировал. Но хотелось бы в событиях поиметь или имя компа или его айпишник. Думал, на 2008 серваке такого нет, а есть в более поздних серверных версиях, но нет. На работе посмотрел, также без айпишников логи ведутся.
Есть ли возможность добавить в событие 4663 IP или имя компа? Хочу вычислить, откуда вирусня прёт, а то в этой организации многие сидят под одним логином. Я говорю, давайте каждому учётку заведём. Нет, говорят. Нам так удобнее. Ну что с такими делать?
Спасибо за статью. Пришлось исправить, т.к. у меня Server 2008 R2 (соответственно там старая версия Powershell), данные выгружаются в MySQL 5.0.95, который находится на другом старом Linux сервере:
1) В базе выполнил SQL-запрос:
SET SESSION old_passwords=0;
SET PASSWORD FOR db_user_name=PASSWORD(‘db_user_password’);
3) Создал задание в планировщике с такими параметрами:
Вкладка Общие:
-выполнять вне зависимости от регистрации пользователя
-выполнять с наивысшими правами
-выполнять от учетки админа домена
Вкладка Триггеры:
-начать задачу при событии
-Параметры: Простое, Журнал — Безопасность, Источник — Microsoft Windows security auditing, Код события — 4663
-внизу галочка — Включено
Вкладка Действия:
-Действие — Запуск программы
-Программа или сценарий: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
-Добавить аргументы: E:\scripts\file_del_to_db.ps1 (путь к скрипту)
Вкладка Параметры:
-Разрешать выполнение задачи по требованию
-Останавливать задачу, выполняемую дольше: 3 дн.
-Принудительная остановка задачи, если она не прекращается по запросу
-Если задача уже выполняется, то применять правило: Не запускать новый экземпляр.
Ну и при сохранении задачи естественно нужно будет ввести пароль пользователя, от имени которого она будет выполняться (у меня учетка админа домена).
Теперь особенность. За 1,5 дня у меня в базе 8000 записей. Как бы много, и не очень удобно в случае чего искать нужные.
Просьба к автору статьи, не могли бы Вы изменить скрипт так, чтобы данные в базу писались каждый день в отдельные таблицы или как-то по-другому их отделить, а также сделать исключение файлов, например, по расширению (а то пользователи напрямую открывают по сети файлы Microsoft Office и в базу потом пишутся записи об удалённых файлах *.tmp). Спасибо))).
Спасибо за ответ. Не могу точно знать какие типы файлов там есть, т.к. структура папок огромная, всего примерно 2 млн. файлов))) Конечно и ненужные есть, но рыться там у меня нет желания, у каждого отдела своя папка… короче там чёрт ногу сломит))). Поэтому вышел из положения так:
1) Перенес базу на новый Linux сервер, там 10.3.28-MariaDB. В ней есть уже планировщик заданий.
2) В phpmyadmin создал задачу, которая каждый день в 00:00 удаляет из базы записи о файлах *.tmp.
Параметры задачи такие:
Название события: file_del_tmp_every_day
Состояние: ENABLED
Тип события: RECURRING
Выполнять каждые: 1 DAY
Начало: 2021-05-14 00:00:00
Конец: (Пусто)
Определение: delete from `db_name`.`track_del` where file_name like ‘%.tmp’
Сохранить при окончании: (Поставил галочку)
Определитель: root@localhost
Также нужно не забыть:
Статус планировщика событий: Включить
Пока пусть будет так. Правда с 14 мая 2021 до сегодня (21 мая 2021) размер базы 114 МБ и количество строк примерно 530000))). Жесть конечно, пока не знаю что с этим делать))).