Intereting Posts
Запуск скрипта на изображении облачной федерации при загрузке Список разрешений пользователя для определенной папки Как я могу избежать экранированных символов разделителя в команде Unix? Как заставить мой скрипт запускать экран как не root Загрузка в каталог chroot оставляет корневой раздел только для чтения Как я намеренно обрушиваю Ubuntu Linux 14.04 LTS? mkdir -p, если конечной целью является символическая ссылка Как добавить число в один столбец на основе чисел в других столбцах Что такое vi эквивалент команды «set ruler» vim? Попытка запуска почтового сервера PostFIX. Но отправка почты не работает Как построить одномерные данные с погрешностью в LibreOffice Calc? как установить имя хоста в yast? Почему почти каждая программа жалуется на мой язык? удалить пользователя с уникальным идентификатором список графических процессов из терминала

Список владельцев файлов

У меня есть файловая система NFS размером 4 Тб, которая подается из фильтра NetApp. Инструменты квоты NetApp говорят мне, что определенный пользователь использует X объем дискового пространства в этом qtree, но он не находится в «своем» каталоге, он может быть где угодно в файловой системе. Поэтому я должен найти его так, чтобы его можно было либо оправдать, либо очистить.

Я запускаю команду find -user и она работает в течение трех дней, и это всего лишь список файлов. Я планировал вернуться и сделать каждый файл для получения размеров файлов.

Есть ли какой-нибудь инструмент, который может сделать все это для меня лучше? Или подход, который поможет мне получить более легкую информацию? Я надеюсь на что-то вроде SequoiaView в Windows, за исключением возможности просто показывать мне файлы, принадлежащие одному пользователю.

Обновление: это команда, которую я запускаю:

 find * -name .snapshot -prune -o -type f -user $USER -exec ls -l {} \; > /tmp/output.txt 

Цель состоит в том, чтобы написать awk или perl one-liner, чтобы пройти через эти необработанные данные и выяснить, где они находятся.

Если для этого не существует определенного метода NetApp, квота, как правило, всего несколько цифр: используемая сумма, допустимая сумма. Его отслеживается тривиально: если пользователь удаляет файл 1 МБ, вычтите 1 МБ из используемого количества. Если пользователь добавляет 1 МБ в файл, добавьте 1 МБ к используемой сумме. Сама квота не знает (или не заботится) о том, какие файлы используют это пространство.

Тем не менее, команда find, которую вы используете, является субоптимальной. Сначала, чтобы найти владельца, find должен запустить stat в файле. Так что find уже имеет размер. Затем exec ls {} \; является весьма неэффективным. Вы должны хотя бы использовать -exec ls {} + чтобы уменьшить количество вызовов ls . Тем не менее, даже если (если ваша находка имеет это, не уверена его стандарт), это -printf . Это полностью исключает ls и позволяет вам использовать stat поиск:

 find … -printf '%s %p\0' # that gives null-delimited, you can use \n instead # for newline-delimited 

Есть много других флагов для -printf , проверьте -printf find.