PyDumpFSにバグ

ln -s . hoge

とかしてあるところをバックアップしようとするとsymlinkを延々とたどってしまい、パスが非常に長くなってしまいエラーを吐いて落ちる。symlinkのリンク先をたどるようにした弊害が出た。

ディレクトリツリーがループになっていることを判別するか、それとも適当な例外規定を作るか。さあどうしよう。

そういえばこういう事態を避けるためにディレクトリのハードリンクが作りにくくなっているんだったっけか。UNIXディレクトリ構造は本来はツリーじゃなくて有向グラフだが、".."の存在やディレクトリのハードリンクを作りにくく*1してあるおかげで簡易にツリーとみなせるだけなので、今回のようにツリーであること前提で組むとバグになるわけだ。

*1:必ずしも作れないわけではない。rootのみが作れるなど制限はあるが作れるものも存在する。