読者です 読者をやめる 読者になる 読者になる

Webサービスを作って潰すのが趣味な人のブログ

とりあえず作ってから怒られよう

【Ubuntu】サーバー間でファイル転送をする場合sftpやscpよりもrsyncを使ったほうがいいかも

Ubuntu

rsync……

 

先日Ubuntuでサーバーのファイルをディレクトリごとダウンロードする方法を書いたのですが、その時おすすめしたのはscpとsftpでした。これらはとてもシンプルなダウンロードシステムとなっているため簡単ではありますが便利ではありません。

 

blog.3oku.net

 


 

今まで頑張って使っていたのですが、そろそろもうちょっとまともな転送方法は無いかと調べていたところ「rsync」というものが存在することが判明しました

 

Rsyncとは

rsync は、UNIXシステムにおいて、差分符号化を使ってデータ転送量を最小化し、遠隔地間のファイルやディレクトリの同期を行うアプリケーションソフトウェアである。

参考: http://ja.wikipedia.org/wiki/Rsync

 

こんな便利なものが!!

これ、僕が知らなかっただけで結構メジャーな存在らしいです……やっぱり新しい技術は定期的に調べないとダメですねすぐに追いてかれてしまう

 

Rsyncの特徴

sftpやscpとの大きな違いは上の説明にもあるように差分転送等が行える点と途中で停止してもそこから再開が可能という点です。

前者の差分転送に関しては普通にファイル転送をするだけならいりませんが、バックアップのように何度も行き来するファイルなら有用です。

 

後者の転送再開機能はかなり便利です。転送が安定しているかにかかわらず大容量のファイルを転送するときなんかにSSHのセッションが切れてしまったなんて時も不安がなくなります

 

使い方

giste8c815572d6853a2356c

 

こんな感じです。

一つ注意して欲しいのはバックアップツール?なので、ダウンロードしたいサーバーで動かすのではなく、ダウンロードしたいファイルを持っているサーバーからダウンロードしたいサーバーに送信するという仕組みです。ちょっと頭がこんがらがりそうな文章ですが、こうしたい時

 

サーバーA → ダウンロード → サーバーB

 

サーバーBからサーバーAに向かってコマンドを打つのではなく、サーバーAからサーバーBに向かってコマンドを打つことになります。ファイルを送る先を指定するってことですね。

ちなみに肝心の転送速度ですが、詳しくベンチとってないので適当な体感ですけどsftpで転送した際の3倍くらい速いです。特にファイル数が多い時はかなり顕著だと思いますので機会があれば使ってみるといいかもしれません。