ハードリンク
[tag:]
golangでバックアップ用のプログラムを書いたのは
多分2013年の7月だった。
当時はgoのバージョンが1.1で、windowsでは ハードリンクがサポートされていなかったので、
exec.Command("cmd", "/c", "mklink", "/H", dst, src)
という方法でハードリンクを生成していた。
goroutineを駆使していくら並列度をあげても、
os/exec.Commandを使っているのがボトルネックで、
75GBのバックアップに15分以上かかっていた。
1.4からwindowsでも
os.Link(src, dst)
でハードリンクが作れるようになっていたらしく、
これに差し替えたところ4分くらいで終わるようになった。
Go 1.4 Release Notes
リリースノートはちゃんと読まんといかんね。
(でもリリースノートにはSymlinkについてしか書かれていない)