Как получить копии стандартных файлов Linux etc

Как новичок в написании сценариев на Bash, я искал именно это и, основываясь на принятом выше ответе, написал следующий сценарий Nautilus, который назвал " Search Text в Справочнике ... ". Поскольку время от времени это будет полезно для меня, я подумал, что это может быть полезно и для других.

#!/bin/bash
# Nautilus Script to search text in selected folder
# Determine the path
if [ -e -n $1 ]; then
    obj="$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
else
    base="`echo $NAUTILUS_SCRIPT_CURRENT_URI | cut -d'/' -f3- | sed 's/%20/ /g'`"
    obj="$base/${1##*/}"
fi
# Determine the type and go
if [ -f "$obj" ]; then
    /usr/bin/canberra-gtk-play --id="dialog-error" &
    zenity --error --title="Search Directory" --text "Sorry, selected item is not a folder."
elif [ -d "$obj" ]; then
    cd "$obj"
# Get text to search
    SearchText=$(zenity --entry --title="Search Directory" --text="For Text:" --width=250)
    if [ -z "$SearchText" ]; then
        notify-send "Search Directory" "Nothing entered; exiting..." -i gtk-dialog-info -t 500 -u normal &
        exit
    else
        if [ -f "/tmp/Search-Directory-Results.txt" ]; then
            rm "/tmp/Search-Directory-Results.txt"
        fi
        grep_menu()
        {
        im="zenity --list --radiolist --title=\"Search Directory\" --text=\"Please select one of the search options below:\""
        im=$im" --column=\"☉\" --column \"Option\" --column \"Description\" "
        im=$im"TRUE \"case-sensitive\" \"Match only: Text\" "
        im=$im"FALSE \"case-insensitive\" \"Match: TEXT, text, Text...\" "
        }
        grep_option()
        {
        choice=`echo $im | sh -`
        if echo $choice | grep -iE "case-sensitive|case-insensitive" > /dev/null
        then
            if echo $choice | grep "case-sensitive" > /dev/null
            then
                grep -- "$SearchText" *.* > "/tmp/Search-Directory-Results.txt"
            fi
            if echo $choice | grep "case-insensitive" > /dev/null
            then
                grep -i -- "$SearchText" *.* > "/tmp/Search-Directory-Results.txt"
            fi
        fi
        }
        grep_menu
        grep_option
    fi
    zenity  --class=LIST --text-info \
            --editable \
            --title="Search Directory" \
            --filename="/tmp/Search-Directory-Results.txt"
fi
exit 0
8
12.05.2017, 15:45
2 ответа

Несмотря на то, что тема резервного копирования/управления версиями файлов конфигурации может показаться простой на первый взгляд, это одна из самых актуальных тем администрирования системы/инфраструктуры.

Независимо от дистрибутива, для автоматического резервного копирования /etc в качестве простого решения можно установить etckeeper.

По умолчанию он фиксирует /etc в репозитории/системе управления версиями, установленной в той же системе.

Коммиты/резервные копии по умолчанию создаются ежедневно и/или каждый раз при обновлении пакетов.

Пакет etckeeper присутствует практически во всех дистрибутивах Linux.

см.: https://help.ubuntu.com/lts/serverguide/etckeeper.html

или https://wiki.archlinux.org/index.php/Etckeeper

Можно утверждать, что установка этого пакета является хорошим стандартом в отрасли.

Если у вас не установлен etckeeper и вам нужен определенный etc-файл, есть несколько способов; вы можете скопировать его из похожей системы вашей, вы можете попросить своего менеджера пакетов загрузить установочный файл или загрузить его вручную, и извлечь оттуда файл etc; один из самых простых способов — использовать mc (midnight Commander) для перемещения внутри пакетов, как если бы они были каталогами.

Вы также можете использовать репозитории дистрибутива для получения пакетов, в случае debian это http://packages.debian.org

В конце концов, если etc/configurations искажены до неузнаваемости, у вас всегда есть возможность чтобы переустановить конкретный пакет. переместите файлы etc в имя/каталог резервной копии и, например, в Debian:

apt-get install --reinstall package_name

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

https://wiki.debian.org/apt-src (снова пример Debian)

В некоторых пакетах у вас также могут быть образцы файлов конфигурации в /usr/share/doc/package_name , который может быть пригодным или не пригодным для использования.

В крайнем случае, вы также можете найти файлы etc в репозиториях/адресах github, если соответствующие проекты с открытым исходным кодом, просто имейте в виду, что часто дистрибутивы меняют настройки по умолчанию и все вокруг.

Очевидно, что ни один из этих вариантов не освобождает вас от необходимости наличия надежной политики резервного копирования и извлечения из нее потерянных файлов /etc.

Времена также движутся быстро, и, если следовать философии devops, вы также можете полностью отказаться от определенных систем и повторно развернуть их в случае повреждения некоторых файлов; вы также можете использовать CI и повторно развернуть файлы, например, из jenkins.

9
27.01.2020, 20:11

Если ваш дистрибутив имеет живой ISO, или вы не возражаете против виртуальной установки на виртуальную машину (VirtualBox, VMWare и т. д.) ), тогда вы могли бы увидеть его файлы по умолчанию, не копаясь в файлах пакета вручную.

И установка/переустановка/перенастройка любых пакетов в виртуальной машине не изменит ваши «настоящие» системные файлы.

1
27.01.2020, 20:11

Теги

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