git
lässt sich heutzutage einfach für alles verwenden, u.a. auch für ein
Backup der Konfigurationsdaten eines Linuxsystems unter /etc
. Am einfachsten
geht das mit etckeeper
.
etckeeper installieren
# Debian, Ubuntu, Mint, ...
sudo apt install etckeeper
# Archlinux
sudo pacman -S etckeeper
git als VCS aktivieren
sudo sed -i '/VCS=/ s/^#*/#/' /etc/etckeeper/etckeeper.conf
sudo sed -i 's/#VCS="git"/VCS="git"/' /etc/etckeeper/etckeeper.conf
git repository via etckeeper aktivieren
etckeeper init
etckeeper konfigurieren
sudo sed -i 's/#AVOID_DAILY_AUTOCOMMITS=1/AVOID_DAILY_AUTOCOMMITS=1' /etc/etckeeper/etckeeper.conf
sudo sed -i 's/PUSH_REMOTE=""/PUSH_REMOTE="origin"' /etc/etckeeper/etckeeper.conf
sudo systemctl enable etckeeper.timer
etckeeper
macht für bislang nicht commitete Änderungen (z.B. händische Anpassungen) standardmässig einen
automatischen Commit bevor ein Paketmanager eine Installation vornimmt. Damit man diese Änderungen händisch
überprüfen (und in Folge auch händisch committen muss) kann eine entsprechende Option gesetzt werden. Sollte
es solche Änderungen geben bricht der Paketmanager die installation ab.
sudo sed -i 's/#AVOID_COMMIT_BEFORE_INSTALL=1/AVOID_COMMIT_BEFORE_INSTALL=1/' /etc/etckeeper/etckeeper.conf
user/email für commits
Anpassen der Platzhalter root@fqdn
und root@host
erforderlich
sudo git --git-dir /etc/.git --config --local user.email "root@fqdn"
sudo git --git-dir /etc/.git config --local user.name "root@host"
remote repository einstellen
Anpassen der Platzhalter (hostname)
, (namespace)/(repository)
und /home/user/.ssh/id_rsa
erforderlich.
cat <<'EOF' | sudo tee -a /root/.ssh/config
Host etckeeperupstream
HostName (hostname)
User git
IdentityFile /home/user/.ssh/id_rsa
EOF
sudo git --git-dir /etc/.git remote add origin etckeeperupstream:(namespace)/(repository).git
sudo git --git-dir /etc/.git push --set-upstream origin master
Dateien ignorieren
sudo sed -i '/\# end section managed by etckeeper/i *.bak' /etc/.gitignore
sudo etckeeper commit 'added *.bak to gitignore'
sudo etckeeper vcs rm --cached *.bak
etckeeper verwenden
sudo etckeeper unclean
sudo etckeeper commit 'nachricht'
sudo etckeeper vcs <git subcommand>
sudo etckeeper vcs log