Как восстановить случайно удаленный файл системы основы FreeBSD?

Следующий подход перечисляет все полные пути к подобранным двоичным файлам с помощью только Bash builtins:

# mywhich version 2
mywhich() ( # using a subshell the parent shell is not affected by set & shopt, ...
  bin="$1"
  set +f
  shopt -s nullglob
  IFS=':' read -a array <<<"$PATH"
  IFS=""
  result="$( printf '%s\n' ${array[@]/%//${bin}*} )"
  [[ -n "$result" ]] && printf '%s\n' "$result" && exit 0 || exit 1
)

mywhich mkdi
1
21.12.2011, 11:02
3 ответа

Маленькое дальнейшее расследование узнало, что базовые версии хранятся в источнике ядра в /usr/src/etc.

Так CP /usr/src/etc/rc.d/rtadvd /etc/rc.d/rtadvd решенный мои проблемы.

0
27.01.2020, 23:29

CVSWeb покрыл его, но ident /etc/rc.d/rtadvd на моих системных урожаях 8.2-RELEASE-p3

 $FreeBSD: src/etc/rc.d/rtadvd,v 1.12.2.1.6.1 2010/12/21 17:09:25 kensmith Exp $

который я не могу найти там... версия 1.12 отмечена RELENG_8.

2
27.01.2020, 23:29

Этот файл находится в основной системе, так захватите основной системный архив и извлечение что конкретный файл.

cd /tmp
wget -r ftp://ftp.fi.freebsd.org/pub/FreeBSD/releases/i386/8.2-RELEASE/base
cd /
cat /tmp/ftp.fi.freebsd.org/pub/FreeBSD/releases/i386/8.2-RELEASE/base/base.?? |
tar -xzf - etc/rc.d/rtadvd

С другой стороны, так как этот файл идентичен своему источнику, можно захватить etc/rc.d/rtadvd от исходного дерева, любого в Вашей системе, если Вы распаковали его (/usr/src/etc/rc.d/rtadvd) или в сети. Я ожидал бы, что файл будет в /etc/rc.d в исходном структурном виде CVS с RELENG_8_2_0_RELEASE тег; я не знаю, почему это не появляется там. Можно получить его от svn исходного структурного вида в release/8.2.0 ответвление.

1
27.01.2020, 23:29

Теги

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