Git

可以使用 etckeeper 來跟踪 /etc 之外的配置文件嗎?

  • July 20, 2017

具體來說,我想跟踪我的grub.conf( /boot/grub/grub.conf) 和一些 oracle 文件 (ie /db/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora)。

我嘗試使用連結;但是 etckeeper/git 只跟踪連結指向的位置,而不是實際內容。而且我無法創建硬連結,因為文件在另一個卷上。

我知道我可以設置另一個 GIT 儲存庫,但我寧願將它全部放在 etckeeper 中。

更新

根據 nealmcb 的回答,我想出了以下腳本:

#!/bin/sh
set -e

# Based on nealmcb's idea/script from http://serverfault.com/questions/211425/

# If you want other configuration data or files on the system also
# opportunistically tracked via etckeeper, use this script to copy them in.

# If there is a hook of some sort available related to the files
# you're mirroring, you can call etckeeper directly and track them
# proactively, rather than just opportunistically here.

MIRROR_ROOT=/etc/etckeeper.mirror.d
echo "etckeeper: mirroring outside files to $MIRROR_ROOT/:"

mirror_dir() {
  LOCAL_PATH=$1
  echo "  $LOCAL_PATH"
  mkdir -p $MIRROR_ROOT/$LOCAL_PATH
  rsync -a $LOCAL_PATH/ $MIRROR_ROOT/$LOCAL_PATH
}


mirror_dir "/boot/grub"
mirror_dir "/root"  

要添加或刪除路徑,您只需mirror_dir在底部添加或刪除呼叫。

我編輯了上面的腳本以包含純文件。

也許有人應該添加一個在腳本之外配置它的可能性(在 etckeeper 配置中?)並將其作為更新檔發送給 joey hess?

#!/bin/sh
set -e

# Based on nealmcb's + ErebusBat's script from http://serverfault.com/questions/211425/

# If you want other configuration data or files on the system also
# opportunistically tracked via etckeeper, use this script to copy them in.

# If there is a hook of some sort available related to the files
# you're mirroring, you can call etckeeper directly and track them
# proactively, rather than just opportunistically here.

MIRROR_ROOT=/etc/etckeeper.mirror.d
echo "etckeeper: mirroring outside files to $MIRROR_ROOT/:"

mirror_dir() {
  LOCAL_PATH=$1
  echo "  $LOCAL_PATH"
  mkdir -p $MIRROR_ROOT/$LOCAL_PATH
  rsync -a --del $LOCAL_PATH/ $MIRROR_ROOT/$LOCAL_PATH
}

mirror_file() {
  LOCAL_PATH=$1
  DIRPATH=`dirname $LOCAL_PATH | head -n 1`
  echo "  $LOCAL_PATH"
  mkdir -p $MIRROR_ROOT/$DIRPATH
  rsync -a --del $LOCAL_PATH $MIRROR_ROOT/$DIRPATH
}
mirror_file "/var/srv/foo_bar/blog/config.py"
mirror_file "/var/srv/foo_bar_another_host/trac/conf/trac.ini"
mirror_file "/tmp/wildcards/*.jpg"

引用自:https://serverfault.com/questions/211425