У меня вопрос касательно конкретно утилиты find и опции ее -depth. Что-то долго не могла понять и не уверена что сейчас понимаю правильно.
Вот есть такое описание:
depth - производит отбор в обратном порядке, то есть не от каталога, указанного в качестве аргумента, а с наиболее глубоко вложенных подкаталогов; смысл этого действия - получить доступ к файлам в каталоге, для которого пользователь не имеет права чтения и исполнения;
Тут мне однозначно не понять написанного. Как может find, запущенный пользователем, не имеющим прав чтения и исполнения (использования) некоего каталога, получить доступ к файлам в этом каталоге? Это ж вроде как противоречит концепции прав доступа в UNIX.
Далее есть такое описание:
Скажем я хочу провести резервное копирование моего домашнего каталога в смонтированный каталог /backup (имеется в виду копирование со всеми правами и т.п. – прим. переводчика). Я могу это сделать следующей командой:
find . -depth -print | cpio -dump /backup
Эта команда может выполняться и без ключа «-depth», но не всегда. По умолчанию find создает список найденных файлов начиная с места указанного в этой команде, в моем случае это «.» или мой домашний каталог. Этот список состоит из названия каталога, после которого идет содержимое этого каталога. Может возникнуть ситуация, когда исходный каталог имеет права только на чтение, и команда cpio, сначала создав каталог с такими правами, уже не сможет поместить туда файлы, которые содержатся в исходном каталоге (т.е. создается пустой каталог, только для чтения, в котором производится попытка создать файлы – прим. переводчика).
Однако, если вы вспомните о существовании ключа «-depth», то команда find будет формировать список найденных файлов начиная с нижних уровней вложенности. Это означает, что содержимое каталога будет в списке раньше чем его название. А это в свою очередь означает, что файлы, находящиеся в исходном каталоге, будут помещены cpio в целевой каталог раньше, чем она наложит на него права.
Здесь мне в принципе уже все понятно за исключением отсутствия упоминания необходимости x-бита для данного каталога.
Далее man find в моем дистрибутиве:
-depth Process each directory's contents before the directory itself. The -delete action also implies -depth
Т.е. "обработать все содержимое каталога перед самим каталогом". Ну в принципе понятно.
В интернетах есть разные такого-же рода непонятные описания действия этой опции. Складывается впечатление, что либо я чего-то не понимаю, либо авторы таких строк сами не понимают значение опции или что пишут...Как я поняла - опция задает обход каталогов не сверху-вниз от заданного в аргументе find, а снизу-вверх т.е. с файлов-НЕ каталогов каталога/каталогов самого глубокого уровня вложенности. Используется в т.ч. для решения проблемы скопировать каталог с сохранением прав всех его файлов, но для которого отсутствует w-бит, или когда при рекурсивной обработке нужно удалять обработанные файлы. Прошу меня поправить если не поняла таки сути и объяснить свойство и назначение сей загадочной опции ☺