Таким образом, я использую Мерзавца главным образом в целях разработки, но я просто понял, что мог использовать его для хранения версий файлов настроек, которые я имею на своей установке Ubuntu.
Моя предложенная установка:
git init
repo в /
Добавьте a .gitignore
в /
это игнорирует любые файлы кроме определенных настроек, которые я хочу отследить.
Например, .gitignore
мог содержать (источник):
## Ignore everything...
*
## Except...
!/etc/default/tlp
!/etc/crontab
Каждый раз, когда я изменяю эти настройки низкого уровня, я могу отследить их.
Есть ли что-нибудь, что могло пойти не так, как надо с этой установкой? Делает ядро, всегда нуждаются /
только иметь определенные папки? Это испортит функционирование каких-либо приложений?
Ответ на оба из Ваших вопросов не, можно создать любой каталог, который Вы хотите в /
. единственной вещью, которая могла произойти, являются некоторые проблемы разрешения с некоторыми пространственными путями, которые я предполагаю.
Однако лучше сохранить .git
каталог где-то в другом месте, что-то похоже:
git --git-dir=/home/user/backup-root --work-tree=/
Read здесь .
Таким образом, я исследовал другие ответы, и я нашел процедуру, которая работает на меня:
Сделайте a .gitignore
в /
. Это было намного более сложно, чем я думал, что это будет из-за пути дескрипторы Мерзавца, добавляющие файлы в белый список в подпапках. Я использовал это и эту ссылку для помощи мне.
## Source: https://stackoverflow.com/a/29932318/4900327
## Comments are on new lines because trailing whitespace matters in Git (stackoverflow.com/a/8865858/4900327)
# Blacklist all files, folders and subfolders in the same directory as the .gitignore file.
/*
# Do not blacklist the .gitignore file.
!.gitignore
# Now whitelist certain files.
# For files in subfolders, some hoops must be jumped through (stackoverflow.com/a/16318111/4900327):
## Whitelisting files in /etc/ folder:
# Whitelist the /etc/ folder (the git repo folder is whitelisted always)
!/etc/
# Blacklist all files in /etc/ folder.
/etc/*
# Whitelist specific file(s) in /etc/ folder.
!/etc/crontab
## Whitelisting files in /etc/default/ folder:
# /etc/ is already whitelisted, and its contents blacklisted.
# Whitelist /etc/default/ folder.
!/etc/default/
# Blacklist all files in /etc/default/ folder.
/etc/default/*
# Whitelist specific file(s) in /etc/default/ folder.
!/etc/default/tlp
## Whitelisting files in /home/USERNAME/ folder:
# Whitelist /home/ folder.
!/home/
# Blacklist all files in /home/ folder.
/home/*
# Whitelist /home/USERNAME/ folder.
!/home/USERNAME/
# Blacklist all files in /home/USERNAME/ folder.
/home/USERNAME/*
# Whitelist specific file(s) in /home/USERNAME/ folder
!/home/USERNAME/.bash_profile
!/home/USERNAME/.bashrc
Перейдите в /
и выполненный git init .
До сих пор я не мог сохранить .git/
папка в другом каталоге с помощью ссылки упоминается @Ravexina.
Выполненный git add .
и git status
. Необходимо добраться, список всего Мерзавца файлов настроек отслеживает.
If you used the above `.gitignore`, it should track `/etc/crontab`, `/etc/default/tlp`, `/home/USERNAME/.bash_profile`, and `/home/USERNAME/.bashrc`.
Фиксация с git commit -m "Initial settings files"
.
Можно отследить изменения с git log -p -- path/to/file
или gitk path/to/file
. Больше обсуждения этого здесь.
На самом деле Вы, вероятно, хотите к конфигурационным файлам управления версиями в /etc/
(Вы не заботитесь о записях корневого каталога /
, особенно каталоги как proc
или usr
или bin
в /
), таким образом, можно хотеть установить etckeeper
пакет
, И Вы могли также присвоить версию управлению некоторые выбранные подкаталоги (как /usr/share/applications/
, что Вы упомянули).
Однако не смешивают с управлением пакетом Ubuntu система. Возможно, главным образом необходимо скопировать текущий список установленных пакетов.
Если Вы собираетесь сохранить чувствительный материал (как /etc/shadow
) в мерзавце repo, необходимо удостовериться, что это не читаемо всеми пользователями, так как по умолчанию объекты будут иметь разрешение 444
, и каталоги будут иметь разрешение 0755
. Можно изменить разрешение .git
к 700
или поместить его в /root
, Другая проблема состоит в том, что мерзавец не хранит полномочия файла как файловая система, и оно не хранит расширенные атрибуты. Для файлов мерзавец только хранит, являются ли они исполняемым файлом. Таким образом, если Вы захотите восстановить удаленный файл, то его владелец и группа будут корнем (если Вы сделаете это как корень), и его разрешение будет 644
или 755
. Это может быть проблематично для конфигурационных файлов сервисов, владелец которых не является корнем.
Наличие мерзавца repo в / хорошо работает, за исключением того, что оно действительно мешает замечать, когда у Вас есть более низкий мерзавец уровня repo с проблемами, как оно ответит для всех них.
Примечание: Это - меньше работы и вероятно более полезный для использования 'debsums'
sudo apt-get install debsums
, Который позволит Вам быстро обнаруживать (большинство) изменения в двоичных файлах или в конфигурационных файлах.
Как пример от установленных пакетов здесь те, которые отличаются от восходящих пакетов.
$ sudo debsums -c
/boot/vmlinuz-4.10.0-19-generic
И можно получить список измененных конфигурационных файлов с:
$ sudo debsums -ec
debsums: missing file /etc/default/chromium-browser (from chromium-browser package)
/etc/libvirt/libvirt.conf
<snip>
Примечание, как браузер хрома неправильно упаковывается и и перечислил файл в список файлов пакета, который не существует.
/var/lib/dpkg/info/chromium-browser.list
Это использует dpkg данные и избегает большого/.git каталога и рабочего процесса.