rsyncのちょっとイイ話

15,444 views

Published on

Published in: Technology
0 Comments
17 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
15,444
On SlideShare
0
From Embeds
0
Number of Embeds
721
Actions
Shares
0
Downloads
27
Comments
0
Likes
17
Embeds 0
No embeds

No notes for slide

rsyncのちょっとイイ話

  1. 1. rsync のちょっとイイ話 生沼 一公 ID: oinume
  2. 2. <ul><ul><li>株式会社サイバーエージェント勤務 </li></ul></ul><ul><ul><li>仕事ではアプリケーションエンジニア </li></ul></ul><ul><ul><li>言語は主に Java と Perl あたり </li></ul></ul><ul><ul><li>Apache とか Tomcat のミドルウェアの管理はギリギリ守備範囲内 </li></ul></ul>自己紹介
  3. 3. rsync とは… <ul><ul><li>もともとは rcp の置き換えとして開発された </li></ul></ul><ul><ul><li>ローカル / リモートにファイルを効率的に転送 </li></ul></ul><ul><ul><li>daemon として立ち上げることもできるし、 ssh 経由でファイルが転送出来たり </li></ul></ul><ul><ul><li>使われ方としてはバックアップとか Web アプリケーションのディプロイとか? </li></ul></ul>
  4. 4. まずは実行例を
  5. 5. rsync -avz --delete srcdir/ destdir <ul><ul><li>-a: 可能な限り元のファイルの属性を維持して、 srcdir のファイルを dstdir にコピー </li></ul></ul><ul><ul><li>-v: 冗長出力。転送するファイルが出力される </li></ul></ul><ul><ul><li>-z: 転送時に圧縮をかける </li></ul></ul><ul><ul><li>--delete: dstdir にあって srcdir にないファイルは dstdir から削除 </li></ul></ul>
  6. 6. おすすめのオプション
  7. 7. --dry-run
  8. 8. これをつければ 大抵は後悔しない
  9. 9. 特に --delete を つけている時に効果絶大
  10. 10. そろそろデフォルトで dry-run にしてほしい
  11. 11. rsync のハマりポイント
  12. 12. ディレクトリをコピーするときの 末尾の /
  13. 13. これをつける・つけないで 挙動が違う
  14. 14. 具体的には… <ul><li>1. rsync –avz srcdir dstdir </li></ul><ul><li>-> srcdir ごと dstdir にコピー </li></ul><ul><li>2. rsync –avz srcdir/ dstdir ->srcdir 配下のファイルを dstdir にコピーして、 srcdir 自体はコピーされない </li></ul><ul><li>-> これを知らないと意図していないところにファルをコピーしてしまう可能性 </li></ul><ul><li>  </li></ul>
  15. 15. scp との比較
  16. 16. rsync v.s. scp <ul><li>【 rsync のメリット】 </li></ul><ul><li>scp は差分のみのファイル転送ができないので、差分コピーの時は rsync の方が効率が良い </li></ul><ul><li>安全。 scp は転送するときにコピー先のファイルを open してしまうが、 rsync はコピーして最後に mv する。 </li></ul><ul><li>-> scp は途中で止めたり異常終了するとファイルが壊れる可能性がある </li></ul><ul><li>  </li></ul><ul><li>【デメリット】 </li></ul><ul><li>rsync は差分のチェックサムをとるので、 CPU パワーを必要とする。 </li></ul>
  17. 17. 速度比較
  18. 18. 測定環境 <ul><li>165 個の細かいファイルをコピー (iTunes の Album Artwork) </li></ul><ul><li>転送するファイルのサイズは合計で約 42MB </li></ul><ul><li>コピー元: Mac OSX 10.5, Core2 Duo 2GHz, HDD 5400RPM </li></ul><ul><li>コピー先: Ubuntu 9.04, Athlon X2 5050e 2.6GHz, HDD 7200RPM </li></ul><ul><li>ネットワーク:無線 LAN(802.11n) </li></ul>
  19. 19. 測定方法 <ul><li>time scp -Cr 8C46D567D97F73F2 ubuntu:/home/oinume/scp ( 実際は一行 ) </li></ul><ul><li>time rsync -avz –e ssh 8C46D567D97F73F2/ ubuntu: /home/oinume/rsync </li></ul><ul><li>上記を scp と rsync で 3 回分計測 </li></ul>
  20. 20. 測定結果 <ul><li>scp: 12.8 秒 </li></ul><ul><li>rsync: 6.1 秒 </li></ul><ul><li>今回のケースでは rsync の方が 2 倍は速い </li></ul><ul><li>CPU 使用率は scp: 44%, rsync: 87% で rsync が倍ぐらい使ってる </li></ul><ul><li>※ コピーするファイルの容量や数、使用するマシンによって結果は変わる可能性はあるので鵜呑みは禁物 </li></ul>
  21. 21. ちなみに今日話したことの 70% ぐらいは Web+DB Press vol.51 に載っています。興味があればぜひみなさん買ってください。
  22. 22. ありがとうございました

×