Это расширение GNU sed
:
first ~ step
Сопоставлять каждую
step
-й строку, начиная со строкисначала
. Например,sed -n 1 ~ 2p
напечатает все строки с нечетными номерами во входном потоке , а адрес2 ~ 5
будет соответствовать каждому пятому { Строка {1}}, начиная со второй.первый
может быть равен нулю; в этом случаеsed
работает так, как если бы он был равенstep
. (Это расширение .)
Ваши два примера соответствуют одним и тем же строкам, но первый записывает ( w
) их в файл, а второй печатает ( p
) туда, куда идет стандартный вывод.
В общем, всегда обращайтесь к руководству команды. Руководство редко бывает двусмысленным. Применение команды путем объединения нескольких аспектов ее функциональности иногда может быть трудно объяснить в учебном пособии (а иногда в учебном пособии делается попытка упростить понимание, перефразируя одно и то же выражение разными способами, что может привести к путанице), но руководство является конкретным справочником по каждому биту того, что делает агрегированная команда.
Этот ответ представляет собой контрольный список некоторых проблем, которые потребуют тестирования, поскольку они не упоминались в другом месте. Теперь я могу с радостью отбросить упоминания о «резервном копировании» и т. Д., Которые также не содержат подробных сведений о том, как его восстановить. Я не проверял, является ли этот контрольный список полным .
Следующие шаги также игнорируют частые изменения, зависящие от версии, и другие изменения, которые я вижу в etckeeper во время обновления пакетов, как это конкретно не упомянуто в вопросе. По крайней мере, есть, вероятно, более простые системы, где это не проблема, например, маршрутизаторы с OpenWrt.
/ etc
. / etc / fstab
. / etc
, и вам не нужно ничего более сложного для доступа к резервной копии. Мы здесь играем с огнем. Я не знаю, как с этим справится шифрование диска, хотя может помочь использование того же пароля, что и для резервной копии. Обратите внимание, что приведенные ниже шаги не будут работать, если они будут запущены из отдельной «спасательной системы ». mv / etc / /etc.installer # можно удалить позже
mkdir / etc && chmod 755 / etc
ID_FILES = passwd group shadow
для i в $ ID_FILES; сделать cp /etc.installer/${i} / etc; done
i
в $ ID_FILES
вы можете восстановить / etc / $ {i}
из резервной копии в целевую систему. Если резервная копия является репозиторием etckeeper (без дополнительных файлов), то на этапе 12 необходимо скопировать / клонировать ее в / etc
, а затем запустить etckeeper init
. Вероятно, вы могли бы пропустить шаги 10–12.
Резервное копирование / восстановление конфигурации системы поддерживается на маршрутизаторах OpenWrt с определенной функцией в веб-интерфейсе.
На моем OpenWrt 15.05.1, я вижу, что единственными пользователями, владеющими файлами в / etc
(или где-либо еще), являются root
и никто
. Можно с уверенностью предположить, что новая установка OpenWrt уже включает этих пользователей.
Я не знаю, правильно ли будут обрабатываться этим инструментом настройки OpenWrt, в которые добавлены дополнительные пользователи.
Я делаю это, устанавливая etckeeper. Он хорошо интегрирован в Debian и его производные. Etckeeper заботится о запоминании разрешений (но не меток SELinux). Затем резервное копирование /etc
сводится к хорошо понятной проблеме резервного копирования репозитория с контролем версий (например, git pull
из /etc
).
Чтобы восстановить резервную копию:
etckeeper
и необходимую систему контроля версий. /etc
(git clone
и git checkout
или аналогичный). Как указывает sourcejedi, вам необходимо сделать это перед установкой любого пакета, который динамически назначает идентификаторы пользователей или групп. apt-clone
, см. Как реплицировать выбранные пакеты из одной системы Debian в другую? (Debian Wheezy)). Обратите внимание, что есть несколько вещей, которые могут не работать, если аппаратное обеспечение не совсем то же самое или если файловая система была переформатирована, что обычно происходит при восстановлении резервной копии. Чтобы сделать восстановление более плавным, убедитесь, что вы не используете уникальные аппаратные идентификаторы нигде в вашей конфигурации (например, MAC-адрес, серийный номер диска) или случайные идентификаторы (например, используйте метки файловой системы, а не UUID файловой системы или раздела).