Duplicity может и восстанавливает разрешения и владельца ваших файлов / папок, как они были до резервного копирования. Для восстановления владельца должны быть выполнены два предварительных условия:
chown
. Во время процесса восстановления файлы и папки будут принадлежать пользователю root, но после его завершения Duplicity установит владельца для отражения оригинала, если вышеуказанные требования будут выполнены.
.. ede / duply.net
Думаю, это одна из самых глупых командных строк, которые я когда-либо придумал:
$ find . -type l -name "Math*" -print0 |
xargs -0 -n 1 -IXXX find XXX/ -type f -name "*.tex" -print0 |
xargs -0 fgrep "word"
Math *
. снова найдите
на каждом найденном пути, ища файлы *. Tex
. xargs
должен использовать -n 1
для вызова find
с не более чем одним именем пути. Путь будет помещен в заполнитель XXX
. fgrep
(т.е. grep -F
, поскольку у нас есть фиксированная строка поиска) со строкой для найденных файлов. Один из способов сделать это:
find . -type l -name 'Math*' -print0 | \
xargs -0 sh -c \
'find -L "$@" -type f -name "*.tex" -exec fgrep word /dev/null {} +' sh
sh -c '... 'sh
мерзость необходима, чтобы иметь дело со случаем, когда Math *
может иметь пробелы. В противном случае, когда Math *
не расширяется до имен файлов с пробелами , будет работать что-то вроде этого:
find -L $(find . -type l -name 'Math*') -name '*.tex' \
-exec fgrep word /dev/null {} +
/ dev / null
гарантирует, что fgrep
печатает имя файла, даже если для поиска требуется только один файл.
Если вы настаиваете на разрешении ссылок перед поиском с помощью grep, это тоже можно сделать за счет предположений, что (1) ваши имена файлов не содержат символов новой строки и (2) вы используете xargs
из GNU findutils
(BSD xargs
не принимает -d
):
find . -type l -name 'Math*' -exec readlink -f {} + | \
xargs -d '\n' sh -c \
'find "$@" -type f -name "*.tex" -exec fgrep word /dev/null {} +' sh