Самая быстрая проверка защиты дерева файла на NFS

Можно использовать команду находки для создания входного списка для большинства версий tar.

В зависимости от разновидности Unix, использующий синтаксис команды можно отличаться. Например, на IBM AIX это было бы что-то вроде этого:

$ cd /directory/you/want/to/archive
$ find . \( -name '*.php' -o \
            -name '*.txt' -o \
            -name '*.inc' -o \
            -name '*.js' -o \
            -name '*.css' -o \
            -name '*.php3' \) -print > /tmp/input.list
$ tar -c -L/tmp/input.list -f - | gzip -c > /path/to/backup.tar.gz

Если у Вас есть необычный GNU (/Linux) utils, можно сделать:

$ cd /directory/you/want/to/archive
$ find . -regex '.*\.\(php\|txt\|inc\|js\|css\|php3\)' -print > /tmp/input.list
$ tar -c -z -T /tmp/input.list -f /path/to/backup.tar.gz
2
задан 5 June 2012 в 16:32
2 ответа

Ваша линия выполняет три вызова для каждого файла; достаточно одного stat + синтаксического анализа вывода. Для начала измените свой скрипт так, чтобы он вызывал stat только один раз с помощью stat -c "% n% G% A" ... если вам нужна помощь с этим, напишите нам комментарий.

1
ответ дан 3 December 2019 в 11:55

Самым быстрым решением, которое я нашел за последний час, было:

failed=$(find -L . -printf "%p %g %M\n" | awk '{ if ($2 != "XYZ"){ printf $1; exit 1 }; if ( substr( $3, 9, 1 ) != "-" ) { printf $1; exit 2 } }')
ret=$?
test ! $ret -eq 0 && echo "Error with file $failed"

, которое в качестве примера проверяет владельца группы и права доступа. Эта версия, использующая только поиск, но не статистику, и переход по символическим ссылкам как минимум в 100 раз быстрее.

1
ответ дан 3 December 2019 в 11:55

Теги

Похожие вопросы