Jak przywrócić usunięte pliki w katalogu /etc w Ubuntu
Bałagan lub omyłkowo usunięte pliki konfiguracyjne w katalogu /etc, ale nie ma kopii zapasowej? Oto jak przywrócić pliki w takim stanie, w jakim zostały pierwotnie zainstalowane.
W Linuksie katalog /etc jest lokalizacją do przechowywania plików konfiguracyjnych dla całego systemu. Podczas instalowania pakietu oprogramowania może on tworzyć i/lub odczytywać pliki konfiguracyjne specyficzne dla oprogramowania w katalogu /etc w celu niestandardowych konfiguracji użytkownika.
Aby zapobiec zastępowaniu niestandardowych konfiguracji użytkownika, ponowna instalacja pakietów oprogramowania domyślnie NIE zastąpi plików w katalogu /etc, nawet jeśli usunąłeś pliki w tym katalogu. Jednak niektóre pakiety będą pytać, czy zachować lub zastąpić stare konfiguracje podczas instalacji.
Jeśli omyłkowo usunąłeś pliki w /etc lub po prostu chcesz przywrócić pliki w tym katalogu do oryginału, ten samouczek może pomóc.
UWAGA: NIE tylko dla Ubuntu, ten samouczek powinien działać we wszystkich systemach opartych na Debianie.
Krok 1: Dowiedz się, który pakiet zawiera plik/pliki
W systemie Linux wiele aplikacji jest wbudowanych w oddzielne pakiety. Podczas instalowania pakietu oprogramowania xxx może on również zainstalować xxx-data, xxx-common lub xxx-plugins itp. jako zależności. Plik, który chcesz przywrócić, może znajdować się w jednym z pakietów.
Opcja 1: użyj polecenia dpkg:
Aby dowiedzieć się, który pakiet zawiera ten plik, otwórz terminal (Ctrl + Alt + T) lub połącz się z serwerem Debian/Ubuntu. Następnie wypróbuj polecenie dpkg -S.
Na przykład wyszukaj pakiet, który zawiera /etc/ssh/ssh_import_id:
dpkg -S /etc/ssh/ssh_import_idMożesz też wyszukać, który pakiet zawiera pliki w danym folderze (MOŻE wyświetlać wiele pakietów dla jednego folderu).
dpkg -S /etc/sshJeśli nawet nie pamiętasz ścieżki do pliku, po prostu wpisz nazwę pliku. Nawet w przypadku nazwy pliku możesz użyć gwiazdki (*) dla części, której nie pamiętasz.
dpkg -S ssh_imp*Ostatnie polecenie wyszuka, który pakiet zawiera plik ze ssh_imp na początku jego nazwy.
Wskazówki: alternatywnie możesz użyć polecenia wyszukiwania apt-file do podobnego zadania, chociaż wydaje się, że nie obsługuje ono gwiazdki w wyszukiwanym tekście.
Opcja 2: użyj polecenia ucfq:
Polecenie dpkg -S czasami nie działa, ponieważ pakiety, które przeszukasz, mogą być obsługiwane przez ucf (Update Configuration Files).
W takim przypadku możesz zamiast tego użyć ucfq. Na przykład, wyszukaj pakiet, który zawiera /etc/ssh/sshd_config:
ucfq /etc/ssh/sshd_configPolecenie musi wprowadzić pełną ścieżkę do pliku, który chcesz przeszukać. Jeśli nie pamiętasz, spróbuj zamiast tego użyć poniższego polecenia, aby (zastąpić smb zgodnie z tym, co chcesz wyszukać):
grep smb /var/lib/ucf/registryKrok 2: Zainstaluj ponownie pakiet i określ, aby ponownie utworzyć nieistniejące pliki
Po ustaleniu, który pakiet zawiera plik, który chcesz przywrócić, uruchom poniższe polecenie, aby ponownie zainstalować i ponownie wygenerować brakujący plik konfiguracyjny użytkownika:
sudo UCF_FORCE_CONFFMISS=1 apt -o Dpkg::Options::=--force-confmiss install --reinstall openssh-serverW powyższym poleceniu zastąp odpowiednio nazwę pakietu openssh-server.
Tutaj zarówno UCF_FORCE_CONFFMISS=1, jak i -o Dpkg::Options::=--force-confmiss nakazuje ponowne wygenerowanie plików instalacyjnych, jeśli NIE istnieją. Możesz pominąć poprzednią, jeśli pakiet NIE jest obsługiwany przez ucf.
W danych wyjściowych zobaczysz coś takiego jak "Odtwarzanie usuniętego pliku konfiguracyjnego ... z nową wersją, zgodnie z monitem".
Jeśli jest to pakiet .deb lokalnego i chcesz użyć polecenia dpkg do instalacji, uruchom poniższe polecenie, aby zrobić podobne rzeczy:
sudo UCF_FORCE_CONFFMISS=1 dpkg -i --force-confmiss package-name.debZgodnie ze stroną podręcznika ucf dostępne są również opcje dpkg UCF_FORCE_CONFFNEW i --force-confnew, które nakazują zawsze nadpisywać zainstalowany plik docelowy, choć nie wiem dlaczego to NIE działa w moim teście.
przez: ten wątek.


