Как найти документ на файл сервере

Поиск документов в сетевых шарах и файловых помойках

Время на прочтение
2 мин

Количество просмотров 29K

Помойка

Почти каждый из нас когда-либо работал в компании, где есть всеми ненавистная “файлопомойка” — шара с тысячами документов без какой-либо структуры. И наверняка у каждого был момент, когда ему нужно было что-то в этой помойке отыскать. “А Василич этот отчёт на шару кидал в прошлом месяце, глянь там” — слышали мы от коллеги, а тот самый Василич на вопрос “А в какой папке?” конечно же отвечал “А х… не помню, в общем, сам ищи”. И мы погружались в многочасовой ад — бродили по папкам с документами из 90-х, фотографиями котов, договорами вперемешку с анекдотами и прочим шлаком в надежде найти заветный документ.

Наверняка многие из нас пытались навести в этой шаре порядок, “С меня хватит, сейчас возьму, разгребу всё и разложу по полочкам” — заявляли мы всем, тратили часы, дни и недели своего времени разгребая завалы. А параллельно Василиса Семёновна из бухгалтерии, или тот же Василич снова разбавляли разобранные файлы своими документами, котами, анекдотами и прочим, возвращая привычный хаос на своё место. И так продолжалось до тех пор, пока вы не сдались. И шара обратно превратилась в привычную помойку.

Как быть?

Раз идея заставить всех пользователей поддерживать порядок в шаре потерпела фиаско, значит нужно искать альтернативные подходы. Очевидным выбором с минимальными трудозатратами был бы поисковик, который позволяет выполнять поиск как по названиям и метаданным, так и по содержимому всех файлов в помойке.

Когда мы находились на этапе решения данной проблемы для наших клиентов, мы в первую очередь рассмотрели имеющиеся системы для поиска и менеджмента документов, отдавая приоритет open-source решениям. Не вдаваясь в детали поиска и исследования сразу декларирую результат: быстрого, простого и удобного решения для индексации и поиска в шарах, с OCR, тегированием и подсветкой именованных сущностей просто не существовало.

Что дальше? Решение

Поэтому, видя эту проблему во многих компаниях, мы решились на создание своего продукта, конечно же open-source’ного.

В итоге у нас получился Ambar — система для поиска и структуризации документов, которая наконец соответствовала всем нашим требованиям (GitHub), а именно:

  • Мгновенный поиск по содержимому документов, в т.ч. изображений
  • Тегирование документов, в т.ч. автоматическое (например, помечать все изображения тегом image, или помечать все документы где есть IP адреса тегом ip)
  • Поддержка всех офисных форматов (в т.ч. openoffice), pdf с картинками и старых кодировок вроде CP866
  • Автоматический сбор и синхронизации документов из шар-помоек

Рассмотрим вариант решения нашей проблемы с помощью Ambar, по шагам:

  1. Устанавливаете Ambar на линукс сервере: нужен Docker и Ubuntu Server 16.04 и выше (
    инструкция по установке на английском)
  2. Настраиваете SMB или FTP краулер (инструкция на английском)

    Настройка краулера

  3. Наблюдаете за процессом индексации ваших документов на странице статистики
  4. Используете поиск с тегами и прочими плюшками

    Поиск

Итог

В этой короткой статье мы поделились нашей болью, связанной с большими файловыми помойками в компаниях и нашим подходом к решению этой проблемы.

Спасибо за внимание!

25 июля, 2014 12:45 пп
13 086 views
| 1 комментарий

Linux, VPS

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

Данное руководство рассматривает использование соответствующей команды find, которая позволяет искать файлы при помощи различных фильтров и параметров. Кроме того, это руководство вкратце охватывает команду locate, которую можно быть использовать для поиска команд.

Поиск по имени файла

Конечно, поиск файла по имени – самый очевидный способ найти нужный файл.

Для этого используйте:

find -name "query"

Данная команда чувствительна к регистру (то есть, она воспринимает файлы с именем file и File как два разных файла).

Чтобы найти файл по имени без учета регистра, наберите:

find -iname "query"

Чтобы найти файлы, которые не совпадают с определенным шаблоном, нужно инвертировать поиск при помощи флагов -not или метасимвола «!». Обратите внимание, при использовании «!» нужно избегать символов, чтобы оболочка bash не интерпретировала «!» еще до выполнения команды find.

find -not -name "query_to_avoid"

или

find ! -name "query_to_avoid"

Поиск по типу файла

При помощи параметра «-type» можно указать тип необходимого файла. Это работает так:

find -type type_descriptor query

Вот список общих дескрипторов, при помощи которых можно указать тип файла:

  • f: обычный файл;
  • d: каталог;
  • l: символическая ссылка;
  • c: символьные устройства;
  • b: блочные устройства.

К примеру, чтобы найти в системе все символьные устройства, нужно выполнить команду:

find / -type c
/dev/parport0
/dev/snd/seq
/dev/snd/timer
/dev/autofs
/dev/cpu/microcode
/dev/vcsa7
/dev/vcs7
/dev/vcsa6
/dev/vcs6
/dev/vcsa5
/dev/vcs5
/dev/vcsa4
. . .

Чтобы найти все файлы, которые заканчиваются на .conf, используйте:

find / -type f -name "*.conf"
/var/lib/ucf/cache/:etc:rsyslog.d:50-default.conf
/usr/share/base-files/nsswitch.conf
/usr/share/initramfs-tools/event-driven/upstart-jobs/mountall.conf
/usr/share/rsyslog/50-default.conf
/usr/share/adduser/adduser.conf
/usr/share/davfs2/davfs2.conf
/usr/share/debconf/debconf.conf
/usr/share/doc/apt-utils/examples/apt-ftparchive.conf
. . .

Фильтрация по времени и размеру

Команда find позволяет фильтровать полученный результат, руководствуясь размером и временем последнего изменения.

Размер файла

Чтобы отфильтровать файлы по размеру, используйте параметр -size.

Также нужно внести суффикс в конце значения, чтобы указать размер:

  • c: байт
  • k: килобайт
  • M: мегабайт
  • G: гигабайт
  • b: блоки по 512 байт

Чтобы найти файлы размером ровно в 50 байт, наберите:

find / -size 50c

Чтобы найти файлы, размер которых меньше 50 байт, используйте символ «-» перед значением:

find / -size -50c

Соответственно, чтобы найти файлы, размер которых превышает 700 мегабайт, используйте перед значением символ +; команда имеет такой вид:

find / -size +700M

Поиск в зависимости от времени

Linux хранит данные о access time, modification time и change time.

  • access time: время последнего обращения к файлу (когда файл был прочитан или дописан);
  • modification time: время последнего изменения содержимого файла;
  • change time: время последнего изменения инода (inode) файла.

Для фильтрации файлов по времени используйте параметры «-atime», «-mtime» и «-ctime» соответственно.

Значение данного параметра указывает, сколько дней назад был изменен файл. Как и в случае с размером файла, можно использовать символы – и +, чтобы получить файлы, измененные меньше чем или больше чем n дней назад.

То есть, чтобы найти файл, содержимое которого было изменено 1 день назад, используйте:

find / -mtime 1

Чтобы вывести файлы, к которым обращались меньше 1 дня назад, используйте:

find / -atime -1

Чтобы найти файлы, иноды которых были изменены более трех дней назад, введите:

find / -ctime +3

Существуют также сопутствующие параметры, с помощью которых можно указать минуты вместо дней:

find / -mmin -1

Это вернет файлы, содержание которых было изменено минуту назад.

Кроме того, команда find может сравнивать файлы и выводить более новые из них:

find / -newer myfile

Поиск по владельцу и привилегиям

С помощью команды find файлы можно искать по владельцу или правам на файл.

Для того используются параметры –user, –group, и -perm соответственно. Например, чтобы найти файл, принадлежащий пользователю с именем syslog, наберите:

find / -user syslog

Аналогично, чтобы вывести файлы, принадлежащие группе shadow, используйте:

find / -group shadow

Также можно искать файлы с особыми привилегиями.

Чтобы найти файл с определенными правами, используйте:

find / -perm 644

Данная строка выведет все файлы с такими правами.

Чтобы вывести все файлы, привилегии которых больше или равны указанным, используйте синтаксис:

find / -perm -644

Это вернет все файлы с дополнительными привилегиями (например, файл с привилегиями 744).

Фильтрация файлов по глубине

Чтобы выполнить примеры данного раздела, создайте  во временном каталоге структуру каталогов. Она должна состоять из трех уровней каталогов, с десятью каталогами на первом уровне. Каждый каталог (в том числе тестовый каталог) должен содержать десять файлов и десять подкаталогов.

Чтобы создать такую структуру, выполните следующую команду:

cd
mkdir -p ~/test/level1dir{1..10}/level2dir{1..10}/level3dir{1..10}
touch ~/test/{file{1..10},level1dir{1..10}/{file{1..10},level2dir{1..10}/{file{1..10},level3dir{1..10}/file{1..10}}}}
cd ~/test

Чтобы ознакомиться с только что созданной структурой и проверить, все ли создано правильно, используйте команды ls и cd. Затем вернитесь в тестовый каталог test:

cd ~/test

Данный раздел покажет, как извлекать определенные каталоги из этой структуры. Для начала попробуйте выполнить простой поиск файла по имени:

find -name file1
./level1dir7/level2dir8/level3dir9/file1
./level1dir7/level2dir8/level3dir3/file1
./level1dir7/level2dir8/level3dir4/file1
./level1dir7/level2dir8/level3dir1/file1
./level1dir7/level2dir8/level3dir8/file1
./level1dir7/level2dir8/level3dir7/file1
./level1dir7/level2dir8/level3dir2/file1
./level1dir7/level2dir8/level3dir6/file1
./level1dir7/level2dir8/level3dir5/file1
./level1dir7/level2dir8/file1
. . .

Эта команда вывела достаточно объемный результат. Передав этот результат в счетчик, можно увидеть, что в итоге выведено 1111 файлов.

find -name file1 | wc -l
1111

Конечно, в большинстве случаев этот вывод слишком объемный и неудобный. Попробуйте сузить его.

Для этого можно использовать параметр –maxdepth, чтобы задать максимальную глубину поиска:

find -maxdepth num -name query

Чтобы найти file1 в каталогах level1 и выше, укажите максимальную глубину 2 (1 для каталога верхнего уровня и 1 для каталогов level1).

find -maxdepth 2 -name file1
./level1dir7/file1
./level1dir1/file1
./level1dir3/file1
./level1dir8/file1
./level1dir6/file1
./file1
./level1dir2/file1
./level1dir9/file1
./level1dir4/file1
./level1dir5/file1
./level1dir10/file1

Как видите, данный результат имеет гораздо более удобный вид.

Кроме того, можно указать минимальную глубину поиска:

find -mindepth num -name query

Это используется для поиска файлов, которые находятся в конце ветвей каталога:

find -mindepth 4 -name file
./level1dir7/level2dir8/level3dir9/file1
./level1dir7/level2dir8/level3dir3/file1
./level1dir7/level2dir8/level3dir4/file1
./level1dir7/level2dir8/level3dir1/file1
./level1dir7/level2dir8/level3dir8/file1
./level1dir7/level2dir8/level3dir7/file1
./level1dir7/level2dir8/level3dir2/file1
. . .

Опять же, данный результат будет содержать огромное количество файлов (1000).

Максимальную и минимальную глубину поиска можно комбинировать, чтобы уменьшить диапазон поиска:

find -mindepth 2 -maxdepth 3 -name file
./level1dir7/level2dir8/file1
./level1dir7/level2dir5/file1
./level1dir7/level2dir7/file1
./level1dir7/level2dir2/file1
./level1dir7/level2dir10/file1
./level1dir7/level2dir6/file1
./level1dir7/level2dir3/file1
./level1dir7/level2dir4/file1
./level1dir7/file1
. . .

Выполнение и объединение команд

Утилита find позволяет выполнять любую вспомогательную команду на все найденные файлы; для этого используется параметр –exec. Базовый синтаксис выглядит так:

find параметры_поиска -exec команда_и_параметры {} ;

Символы {} используются в качестве заполнителя для найденных файлов. Символы ; используются для того, чтобы find могла определить, где заканчивается команда.

Для примера можно найти файлы с привилегиями 644 (как в предыдущем разделе) и изменить их привилегии на 664:

cd ~/test
find . -perm 644 -exec chmod 664 {} ;

Затем можно сменить привилегии каталога:

find . -perm 755 -exec chmod 700 {} ;

Чтобы связать несколько результатов, используйте команды -and или -or. Команда –and предполагается, если она опущена.

find . -name file1 -or -name file9

Поиск файлов с помощью команды locate

Команда locate является альтернативой для find. Данная команда, как правило, работает быстрее и может легко производить поиск по всей файловой системы.

Установить эту команду можно при помощи с apt-get:

sudo apt-get update
sudo apt-get install mlocate

Но почему команда locate быстрее, чем find? Дело в том, что locate зависит от базы данных файлов в файловой системе.

Как правило, cron-скрипт обновляет эту базу данных раз в день; но ее можно обновить и вручную. Запустите эту команду:

sudo updatedb

Запомните: БД нужно регулярно обновлять, чтобы она содержала актуальные данные; в противном случае найти недавно полученные или созданные файлы будет невозможно.

Чтобы найти файлы с помощью команды locate, просто используйте следующий синтаксис:

locate query

Полученный результат также можно фильтровать.

К примеру, чтобы возвращать только файлы, содержащие сам запрос, вместо того чтобы выводить каждый файл, который содержит запрос в ведущих к нему каталогах, можно использовать флаг –b (чтоб искать только basename, базовое имя файла):

locate -b query

Чтобы команда locate возвращала только файлы, которые все еще существуют в файловой системе (то есть, файлы, которые не были удалены в промежутке между последним запуском updated и текущим вызовом locate), используйте флаг –е:

locate -e query

Чтобы просмотреть статистику, занесенную командой locate в каталог, используйте опцию –S:

locate -S
Database /var/lib/mlocate/mlocate.db:
3,315 directories
37,228 files
1,504,439 bytes in file names
594,851 bytes used to store database

Итоги

Команды find и locate – отличные инструменты для поиска файлов в UNIX‐подобных операционных системах. Каждая из этих утилит имеет свои преимущества.

Несмотря на то, что команды find и locate сами по себе очень мощны, их действие можно расширить, комбинируя их с другими командами. Научившись работать с find и locate, попробуйте фильтровать их результаты при помощи команд wc, sort и grep.

Tags: Find, Linux, Locate, VPS

Приветствую!

FTP (или его защищённый вариант – SFTP) доступ применяется для удалённой работы с файлами и папками. Это довольно популярный протокол, который по сей день активно используется в задачах операций с файлами и папками, что находятся на удалённых компьютерах (серверах).

Но помимо загрузки, выгрузки и копирования, порой возникает задача осуществления поиска конкретных файлов и папок, что расположены среди множества таковых на удалённом устройстве, с которым работа ведётся по FTP протоколу передачи данных.

Image

И данная задача решается достаточно просто, давайте рассмотрим типовой способ.

Получить доступ к файлам и папкам, что располагаются на удалённом устройстве, который в свою очередь поддерживает FTP протокол, можно с помощью соответствующего клиента. В данном конкретном примере мы воспользуемся весьма функциональным клиентом – FlashFXP.

Image

  1. Скачайте и установите его, либо воспользуйтесь портативной версией, которая также существует и доступна к скачиванию с сайта разработчика.
  2. Запустите приложение и создайте подключение, воспользовавшись для этого пунктом Сайты -> Менеджер сайтов…

    Создаём FTP подключение, введя параметры оного

  3. Введя все необходимые данные для FTP или SFTP соединения, осуществите непосредственное подключение.
  4. Соединившись, будут отображены файлы и папки, что размещены на удалённом компьютере. Вам необходимо отрыть окно поиска, для чего в верхнем меню клиента предусмотрен соответствующий пункт Инструменты -> Поиск Файлов на Сервере…

    Открываем инструмент поиска файлов и папок на FTP

  5. Открыв данное окно, вам будет нужно ввести в поле Имя название интересующей вас папки или файла, который должен быть найден. При необходимости, можно скорректировать путь, по которому необходимо осуществлять поиск.

    Также в находящихся там вкладках Дата и Подробно при необходимости можно указать временной диапазон (создание модификация), примерный размер для искомых файлов и папок, указать, что поиск должен осуществляться конкретно среди папок, или среди файлов, установить глубину поиска.

    И в завершении нажать по кнопке Поиск, дабы запустить процедуру поиска.

    Осуществляем поиск интересующих файлов и папок на FTP

  6. По окончании сканирования будет выведен список с найденными файлами и папками, которые можно открыть, скопировать к себе на компьютер или просто перейти, если речь идёт о папке.

    Результаты поиска интересующих объектов через FTP

Как вы понимаете, описываемым клиентом поиск необходимых вам файлов и папок по протоколу FTP или SFTP не ограничивается, существует множество других программных решений, которыми можно воспользоваться, дабы осуществить необходимую задачу поиска. Работают они по аналогичному принципу, вам лишь остаётся выбрать описываемое решение, или подобрать какое-то другое, которое наиболее приглянется лично вам интерфейсом иили дополнительным функционалом.

Image

Пожертвование сайту IT-Actual.ru (cбор пожертвований осуществляется через сервис «ЮMoney»)

На что пойдут пожертвования реквизиты других платёжных систем

Привет.

Не секрет, что в экономике ныне дела обстоят не лучшим образом, цены растут, а доходы падают. И данный сайт также переживает нелёгкие времена 🙁
Если у тебя есть возможность и желание помочь развитию ресурса, то ты можешь перевести любую сумму (даже самую минимальную) через форму пожертвований, или на следующие реквизиты:

Номер банковской карты: 5331 5721 0220 5546
Кошелёк ЮMoney: 410015361853797
Кошелёк WebMoney: Z812646225287
PayPal: paypal@it-actual.ru
BitCoin: 1DZUZnSdcN6F4YKhf4BcArfQK8vQaRiA93

Оказавшие помощь:
Сергей И. – 500руб
<аноним> – 468руб
<аноним> – 294руб
Мария М. – 300руб
Валерий С. – 420руб
<аноним> – 600руб
Полина В. – 240руб

Деньги пойдут на оплату хостинга, продление домена, администрирование и развитие ресурса. Спасибо.
С уважением, создатель сайта IT-Actual.ru

Если вы администрируете общие сетевые папки Windows, скорее всего вы периодически сталкиваетесь с просьбами пользователей принудительно закрыть файлы, открытые (заблокированные) в сетевых папках другими пользователями. Обычно это связано с некорректной работой программы, неправильном завершении сессии пользователя или ситуациях, когда пользователь открыл файл и забыл закрыть его (ушел домой, в отпуск и т.д.). Во всех этих случаях файл в сетевой папке оказывается заблокированным, и другие пользователи не могут вносить в него изменения.

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

Содержание:

  • Вывод списка открытых файлов в сетевой папке Windows
  • Определяем пользователя, который открыл файл в сетевой папке с помощью Openfiles
  • Как принудительно закрыть открытый файл в Windows?
  • Get-SMBOpenFile: вывод списка открытых по сети файлов в PowerShell
  • Как удаленно закрыть открытые SMB файлы с помощью PowerShell?

Вывод списка открытых файлов в сетевой папке Windows

Список открытых по сети файлов в Windows можно получить с помощью стандартной графической консоли Computer Management (Управление компьютером —
compmgmt.msc
).

Запустите на файловом сервере консоль Computer Management (или подключитесь к нему консолью удаленно со своего компьютера) и перейдите в раздел System Tools -> Shared Folders -> Open files (Служебные программы -> Общие папки -> Открыты файлы). В правой части окна отображается список файлов на сервере, открытых удаленно. В данном списке указан локальный путь к файлу, имя учетной записи пользователя, количество блокировок и режим, в котором открыт файл (Read или Write+Read).

Открыты файлы на файловом сервере Windows

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

Openfiles /Query /fo csv |more

Openfiles /Query

При удаленном доступе пользователя к папке или файлу в сетевой папке (SMB) на сервере, для пользователя создается новая сессия. Вы можете управлять открытыми файлами с помощью идентификаторов этих сессий.

Вы можете вывести список открытых файлов на сервере удаленно. Например, чтобы вывести все открытые по сети файлы на сервере mskfs01, выполните:

Openfiles /Query /s mskfs01 /fo csv

Команда Openfiles позволяет также вывести список локально открытых файлов. Для этого на сервере нужно включить опцию Maintain Objects List (Построение списка объектов) командой
openfiles /local on
и перезагрузить сервер. После этого команда Openfiles будет отображать файлы, открытые локальными процессами (этот режим желательно использовать только для отладки, т.к. может негативно сказаться на производительности сервера).

Определяем пользователя, который открыл файл в сетевой папке с помощью Openfiles

Чтобы удаленно определить пользователя, который открыл (заблокировал) файл cons.adm в сетевой папке на сервере mskfs01, выполните команду:

Openfiles /Query /s mskfs01 /fo csv | find /i "cons.adm"

Ключ /i используется, чтобы выполнялся регистронезависимый поиск.

Можно указать только часть имени файла. Например, чтобы узнать, кто открыл xlsx файл, в имени которого есть строка farm, воспользуйтесь таким конвейером:

Openfiles /Query /s mskfs01 /fo csv | find /i "farm"| find /i "xlsx"

Можно, конечно найти открытый файл и в графической консоли Computer Management, но это менее удобно (в консоли нет возможности поиска).

Как принудительно закрыть открытый файл в Windows?

Чтобы закрыть открытый файл, нужно найти его в списке файлов секции Open Files и в контекстном меню выбрать пункт “Close Open File”.

Закрыть открытые файлы в сетевой папке

Если на файловом сервере сотни открытых файлов, найти их в консоли будет непросто. Удобнее воспользоваться утилитой Openfiles. Как мы уже говорили, она возвращает ID сессии открытого файла. Вы можете принудительно закрыть файл и сбросить подключение пользователя по ID SMB сессии. Сначала нужно определить ID сессии открытого файла:

Openfiles /Query /s mskfs01 /fo csv | find /i "farm"| find /i ".xlsx"

Теперь можно принудительно отключить пользователя по полученному идентификатору SMB сессии:

Openfiles /Disconnect /s mskfs01 /ID 67109098

Openfiles Disconnect - отключение файла по id сессии
Можно принудительно сбросить все сессии и освободить все файлы, открытые определённым пользователем:
openfiles /disconnect /s mskfs01 /u corpaivanova /id *

Обратите внимание, что принудительное закрытие файла, открытого клиентом на SMB сервере, вызывает потерю несохраненных данных. Поэтому команду
openfiles /disconnect
и командлет
Close-SMBOpenFile
(рассматривается ниже) нужно использовать с осторожностью.

Get-SMBOpenFile: вывод списка открытых по сети файлов в PowerShell

В версии PowerShell в Windows Server 2012/Windows 8 появились командлеты для управления сетевыми файлами и папками на SMB сервере. Эти командлеты можно использовать чтобы удаленно закрыть открытые по сети файлы.

Список открытых файлов можно получить с помощью командлета Get-SMBOpenFile. Чтобы закрыть файл (сбросить подключение), используется Close-SmbOpenFile.

Для вывода полного списка открытых файлов на сервере, выполните команду:

Get-SMBOpenFile

Get-SMBOpenFile вывод списка открытых файлов на SMB сервере с помощью powershell

Команда возвращает ID файла, ID сессии и полное имя файла.

Можно вывести список открытых файлов с именами пользователей и компьютеров (IP адресами):

Get-SmbOpenFile|select ClientUserName,ClientComputerName,Path,SessionID

poweshell вывод список пользователей, которые открыли файлы в сетевой папке windows

Можно вывести все файлы, открытые определенным пользователем:

Get-SMBOpenFile –ClientUserName "corpaaivanov"  |select ClientComputerName,Path

или с определенного компьютера (сервера):

Get-SMBOpenFile –ClientComputerName 192.168.12.170| select ClientUserName,Path

Можно вывести список открытых файлов по шаблону. Например, все открытые по сети exe файлы:

Get-SmbOpenFile | Where-Object {$_.Path -Like "*.exe*"}

или файлы с определенным именем:

Get-SmbOpenFile | Where-Object {$_.Path -Like "*защита*"}

Чтобы закрыть файл используется командлет
Close-SmbOpenFile
. Закрыть файл можно по ID:

Close-SmbOpenFile -FileId 4123426323239

Но обычно удобнее закрыть файл по имени:

Get-SmbOpenFile | where {$_.Path –like "*prog.xlsx"} | Close-SmbOpenFile -Force

С помощью
Out-GridView
можно сделать простую графическую форму для поиска и закрытия файлов. Следующий скрипт выведет список открытых файлов. Администратор должен с помощью фильтров в таблице Out-GridView найти, выделить нужные файлы и нажать ОК. В результате выбранные файлы будут принудительно закрыты.

Get-SmbOpenFile|select ClientUserName,ClientComputerName,Path,SessionID| Out-GridView -PassThru –title “Select Open Files”|Close-SmbOpenFile -Confirm:$false -Verbose

Get-SmbOpenFile вместе с out-gridview - powershell скрипт с графическим интерефейсом по выбору и принудительному закрыттию заблокированных (открытых) файлов в windows

Как удаленно закрыть открытые SMB файлы с помощью PowerShell?

Командлеты Get-SMBOpenFile и Close-SmbOpenFile можно использовать чтобы удаленно найти и закрыть открытые файлы. Сначала нужно подключиться к удаленному SMB серверу Windows через CIM сессию:

$sessn = New-CIMSession –Computername mskfs01

Также вы можете подключаться к удаленному серверам для запуска команд через командлеты PSRemoting: Enter-PSSession или Invoke-Command .

Следующая команда найдет SMB сессию для открытого файла
*pubs.docx
и завершит ее.

Get-SMBOpenFile -CIMSession $sessn | where {$_.Path –like "*pubs.docx"} | Close-SMBOpenFile -CIMSession $sessn

Подтвердите закрытие файла, нажав
Y
. В результате вы разблокировали открытый файл. Теперь его могут открыть другие пользователи.

Get-SMBOpenFile - удаленное управление открытых файлов

Чтобы убрать подтверждение закрытия файла на сервере, используйте ключ
–Force
.

С помощью PowerShell вы можете закрыть и разблокировать на файловом сервере все файлы, открытые определенным пользователем (пользователь ушел домой и не освободил файлы). Например, чтобы сбросить все файловые сессии для пользователя ipivanov, выполните:

Get-SMBOpenFile -CIMSession $sessn | where {$_.ClientUserName –like "*ipivanov*"}|Close-SMBOpenFile -CIMSession $sessn

Студворк — интернет-сервис помощи студентам

Как найти файл на сервере?

Запросы в гугл приводят на сервисы подобного рода:

http://www.filesearch.ru/

Но во-первых, такие сайты ищут файлы почему-то по всем серверам, а не на каком-то конкретном. А во вторых, такой вот файл httpd-2.2.15-win32-x86-no_ssl.msi найден не будет, хотя он есть.

++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++

Он есть на этом сайте:
http://archive.apache.org/

Вот полный путь к нему,

http://archive.apache.org/dist… ies/win32/

но это я узнал из стороннего источника. Вот сейчас надо постараться его найти на этом сайте собственными силами, не тыкаясь во все папки. (То есть я же не могу догадаться, что нужно ткнуть так: Archive of public software releases -> httpd -> binaries -> win32)

wget может скачать весь сайт, конечно. Но это плохо. Вот если бы можно скачать не файлы, а просто список файлов в виде дерева, да или в любом виде даже! Спасибо, кто откликнется. XP Home 32 SP3

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