ある日、ぼーっと DB のコピーをした後に、コピー元と uid が違っていたので以下のようなコマンドを叩いた。ぼーっと。
chown -R mysql:mysql ../
これを叩いたときのカレントディレクトリは /var/lib/mysqlである。ドットが一個多いので /var/lib 以下が全部 mysqlになって大惨事。
こういうとき FreeBSDだったらmtreeを使うんですが、 GNU/Linuxだと無いようなのでどうするねん。と困っていたところ、 satoh_fumiyasu@ さんに getfacl/setfacl というポインタを教えてもらいました。
同一構成の適当なホストからパチってきて合わせる。
-bash-3.2# hostname rokuchotouge -bash-3.2# pwd /var -bash-3.2# getfacl -R lib | nc tochugoe.localdomain 30000 -bash-3.2#
-bash-3.2# hostname tochugoe.localdomain -bash-3.2# pwd /var -bash-3.2# nc -l 30000 | setfacl --restore=- setfacl: lib/hoge: No such file or directory (snip) -bash-3.2#
残りは ls -Rl | grepmysqlとかで探してよきに計らう。
10年に一度ぐらいしか作らないようなホストを作る最後の方でヘマやらかして、作り直しに心折れていたところなので大変役に立ちました。