2011年8月28日日曜日

QNAPをrsyncでバックアップ (手動)

QNAPのNAS間ではrsyncを使って自動的に同期を取ることができるんだけど、しばらく前からtimeoutで失敗するようになってしまった。

バックアップ先のTS-410がARMSで遅いからかなあとか思っていたけど、単にQNAPのカーネル3.5以前のrsyncが3.0.6で腐っているかららしい。

FWを挙げずに、手作業でrsync動かすことでバックアップできたのでその手順を書いとく。

  1. 設定を済ます
  2. 標準のrsyncdを停止する
  3. バックアップ先で“/opt/bin/rsync --daemon --config=/etc/rsyncd.conf”
  4. バックアップ元で“/opt/bin/rsync -a --sparse --delete --timeout=600 --port=873 /share/MD0_DATA/Public/ admin@[192.168.0.2]::Public --progress -v”
以下は上記の詳細な手順。

  1. 設定を済ます
    1. まずは普通の手順でバックアップを実行できるよう設定を済ませておく (webから)
    2. Optware IPKGをバックアップ元と先の両方にインストールする (webからApplication Servers→QPKG Plugins)
    3. インストールしたIPKGを両方で有効にする (webから)
    4. sshでログインする (cygwinやputtyから)
    5. “qpkg install rsync”と入力してrsyncを両方にインストールする (sshから)
  2. 動かしてるrsyncdを両方で停止する (webからApplication Servers→Backup Server)
  3. バックアップ先で“/opt/bin/rsync --daemon --config=/etc/rsyncd.conf”と入力する (sshから)
  4. バックアップ元でコマンド実行
    1. バックアップ元で“qpkg install procs”と入力してpsをインストールする (sshから)
    2. バックアップ元でremote replicationを開始する (webから)
    3. バックアップ元で“/opt/bin/ps auxw | grep rsync”と入力してコマンドラインを調べる (sshから)
    4. バックアップ元でremote replicationを停止する (webから)
    5. バックアップ元で、3で調べたコマンドラインを使って、最後に“--progress -v”を付けて、“--sever-mode=1”と“--schedule=***”と“--password=***”の引数は消して、“/opt/bin/rsync -a --sparse --delete --exclude=:2eDS_Store --exclude=.AppleDB/ --exclude=.AppleDesktop/ --exclude=.AppleDouble/ --timeout=600 --port=873 /share/MD0_DATA/Public/ admin@[192.168.0.2]::Public --progress -v”などとして起動する。 (sshから)
  5. 必要なら2で停止したrsyncdを再開する (webから)
これでOKだった。

2011年6月12日日曜日

git とは

gitというのは、分散ソース管理システムの一種。

中身は何かと言うと、ファイルシステムと考えると分かりやすい。内部には以下の情報を持つ。

  • ファイルの中身を、バージョン間の差はとらず、個別のデータとして詰め込んだデータベース
  • あるバージョンのスナップショット情報(あるバージョンで、あるディレクトリに存在したファイルは、データベース中のどのデータかという情報)
  • バージョンの流れ、コミット時のコメント、ブランチなどの管理情報

ユーザがgitを使うと、gitコマンドは内部のデータベースと、展開中のファイルを使って、差分はこれだよとか、変更したファイル一覧はこれですとか、表示してくれる。

ファイルが個別に保存されているので、古いバージョンを取り出すときにはその間でdiffを取るだけ。従来問題だった、差分を再帰的に当てた上でdiffを取るといった面倒な処理は必要ないので、非常に高速にバージョン間の比較が行える。

また、分散ソース管理では、gitそのものが単純な仕組みのため、基本的に以下の情報をやりとりするだけで実現できる。

  • データベース間で追加されたファイル
  • 追加されたスナップショット情報
  • 追加された管理情報
扱うデータが、他のデータに依存しないため、非常に単純だ。

gitは、こういう単純な仕組みの上に、強力なmergeエンジンや、rebase処理を実装することで、スマートで力強い、かつ非常に高速なバージョン管理システムになっている。俺は、gitで、初めてLinusさんを尊敬した。

2011年5月14日土曜日

2011年5月7日土曜日