タグ別アーカイブ: rsync

cronやプログラムでssh越しrsyncを利用するときにカナリ便利なオプション

1. 始めに

同期が必要な場面って結構ある。ローカルのディレクトリ間の同期はもちろん、特にインターネット越しの同期が必要になることって結構ある。

そんなときには決まってrsyncの出番だ。ファイルの変更を検知し、よしなに同期してくれる。そんな頼もしいrsync。枯れたソフトウェアなのでホスティングを借りたときにftpだけじゃなくてsshとrsyncが付いてきたりもする。すでに広まっているからすごく便利。

で、さて、そんな便利なrsyncなんだけれどcronなどで定期的、自動的にrsyncを実行するときにはチョットした問題があったりする。

その問題とは二点。一つはパスワード無しで認証を通す必要があること。もう一つはフィンガープリントと呼ばれるsshのホストの正当性を確かめる確認が出ること、だ。

この問題はどちらも、プログラムやcronなどプロンプト(よろしいですか?[y/n]的なアレ)を処理できない端末でrsyncを利用する際に解決しなければいけない問題。

前者のパスワード無しで認証を通すためにはsshの公開鍵認証を利用する。コレに関しては文献がいろいろとあるので参照されたし。

rsyncとsshで別のマシンにバックアップ

rsync over ssh を使ってバックアップ

さて、今回は二つ目の問題点、フィンガープリントのプロンプトを越えるためのオプションについて考える。環境としてsshクライアントとしてOpenSSHを想定している。他だとうごかないかも。

続きを読む cronやプログラムでssh越しrsyncを利用するときにカナリ便利なオプション

転送量に制限をかけてバックアップをとりたい

1. 転送量多いとISPから怒られちゃうよ!

現在、インターネットを通じてファイルのバックアップを行っている。夜中などのトラフィックが比較的すいている時間帯を選んでバックアップを行っている。

バックアップの内容はいろいろなもので、そしてそこそこ大きい。バックアップするデータ量は日によってまちまち。で、このバックアップデータが結構でかいので、バックアップにちょっと頭を悩ませている。というのも、利用しているISPが一日の転送量に制限をかけているからだ。

制限といっても一定量に達したら自動的に帯域を絞る、というものではなく、なんと警告メールがくる。あなた帯域使いすぎですよ、って。正直怖いッス。

で、なにかよいバックアップ方法がないだろうかと考えてみた。

まず、バックアップの特性について考える。

  • バックアップデータは大きい。結構大きい。数GB単位。
  • ファイルは分割されている。一つのファイルはおおよそ数MB ~ 1GB。
  • 転送量は一日ごとに上限値が決まっている。そしてそれはユーザが意識して制限量以下に抑える必要がある。
  • 転送量制限が一日ごとなので一日ごとにバックアップをとりたい
  • バックアップしたいデータ、例えば1日目に1日目の増分の50%、二日目には一日目の増分の残り50%と二日目の増分100%、のように、遅れてバックアップを取っても良い。ただし増分が一日の転送量を超えてしまうと終わりなきキューになるのでダメだけれどね。

上記の条件の内、とくに一日目、二日目という風にバックアップを分けてもよい、という条件があるので、コレを利用したrsyncを使ったバックアップ方法を考えてみた。

続きを読む 転送量に制限をかけてバックアップをとりたい

rsyncで大量のファイルをコピーした

rsyncで大量のファイルをコピーした。
回線はインターネットVPN越し、asahi-netとocnがそれぞれのISP。

利用したコマンドは

shell> rsync -arvz 192.168.2.1:/hoge/fuga ./hoihoi/
(中略)

sent 112137 bytes  received 38402767035 bytes  2392926.39 bytes/sec
total size is 38389426720  speedup is 1.00

トータルで6000ファイル強、38GBの転送。2.392 MB/sで4.45時間かかったみたい。結構速度出てるなぁ。

でも途中途中ではばっちり帯域制限かけられてた。

rsyncでディレクトリを同期の対象から外したい

rsyncでディレクトリを同期の対象から外したい。

すでにexcludeを利用しているが、同期しているディレクトリの途中にはさまっているディレクトリを、そのディレクトリ以下すべてを同期の対象外としたい。

rsync で特定のディレクトリを同期対象外にする –exclude の指定方法

どうやら

--exclude="hoge/"

ってかくといいみたい