多分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についてしか書かれていない)
No comments:
Post a Comment