diff есть опция --recursive (-r) для сравнения двух каталогов (файлов внутри них). Есть ли способ заставить diff игнорировать все файлы сокетов и только файлы сокетов?

Я использую diff --brief -r --no-dereference /var/ /media/mateusz/Database/tmp/duplicity_unpack/var/ чтобы проверить часть моей резервной копии, и меня заполняют записи типа Only in /var/lib/samba/private/msg.sock: 10001 . Эти файлы являются файлами сокетов, которые Duplicity не удалось скопировать - и это не указывает на сбой резервного копирования.

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

Обратите внимание, что пустые папки не следует игнорировать при сравнении.

1 ответ1

1

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

find /var/ -type f -exec diff {} /media/mateusz/Database/tmp/duplicity_unpack{} \;

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .