rsync
Linuxのバックアップはやっぱりrsyncでしょう。ということで、何故かこれまであまり使う機会のなかったrsyncコマンドですが、このたびrsyncでバックアップしてみましたので備忘録しておきます。
とくにファイル数やディレクトリ数の多い場合にはcp -prコマンドでは無限とも思える時間、応答が無いことがあり不安にさせられますが、rsyncコマンドは高速にコピーを実行することができるようです。さらに単なるコピーコマンドではなく「同期」を取る事ができるのが便利です。つまりコピー元で削除されたファイルがあれば、コピー先のファイルも削除してくれます。これは便利。
rsync=remote + syncということだと思いますが、ここでは同一ホスト内でのコピ−処理をやってみました。
rsync -av /backup_from /backup_to/
のコマンドで、/backup_from ディレクトリ以下のファイル/ディレクトリを再起的に/backup_toディレクトリ以下にコピーしてくれます。ここでの注意事項は/backup_from/とディレクトリの後ろに/を付けてしまうと、ディレクトリの中ノ
ファイルはコピーしてくれない、ということです。
rsyncにはドライラン機能があります。ドライランってのは実際に処理を実行せずにためしてみることです。この場合には、実際のコピー処理は行わないということになります。ドライランする場合には-nオプションを付けます。
rsync -avn /backup_from /backup_to/
続いて同期処理。これは--deleteオプションをつければOK。ちなみにデフォルトでは最初に削除処理をしてからコピー処理が行われるので、コピー先の容量に不安があるときも安心です。
rsync -avn --delete /backup_from /backup_to/
非常に高速なrsyncですが、コピー対象のファイル数が多い場合にはメモリを消費します。rsyncの公式サイトによると、これはコピーするファイルの容量には関係なく、ファイル数に依存するそうです。Linuxでtopコマンドで様子をみていると、あれよあれよという間に2GBの空きメモリが5MBくらいになっちゃいました。Linuxの場合、一度使われたメモリはtopコマンド等で確認できるメモリ利用量からは解放されないのでちょっと不安になります。これは常時運用のサーバを監視している方はご存知かもしれません。実際には空きメモリとしては表示されませんがメモリ不足とかの状況には陥りませんでした。
ちなみに今回は、NASサーバAからNASサーバBに、6万ファイルくらいを一気にコピーしてみました。4時間くらいで終わりました。初回はさすがに時間がかかりますね。
とくにファイル数やディレクトリ数の多い場合にはcp -prコマンドでは無限とも思える時間、応答が無いことがあり不安にさせられますが、rsyncコマンドは高速にコピーを実行することができるようです。さらに単なるコピーコマンドではなく「同期」を取る事ができるのが便利です。つまりコピー元で削除されたファイルがあれば、コピー先のファイルも削除してくれます。これは便利。
rsync=remote + syncということだと思いますが、ここでは同一ホスト内でのコピ−処理をやってみました。
rsync -av /backup_from /backup_to/
のコマンドで、/backup_from ディレクトリ以下のファイル/ディレクトリを再起的に/backup_toディレクトリ以下にコピーしてくれます。ここでの注意事項は/backup_from/とディレクトリの後ろに/を付けてしまうと、ディレクトリの中ノ
ファイルはコピーしてくれない、ということです。
rsyncにはドライラン機能があります。ドライランってのは実際に処理を実行せずにためしてみることです。この場合には、実際のコピー処理は行わないということになります。ドライランする場合には-nオプションを付けます。
rsync -avn /backup_from /backup_to/
続いて同期処理。これは--deleteオプションをつければOK。ちなみにデフォルトでは最初に削除処理をしてからコピー処理が行われるので、コピー先の容量に不安があるときも安心です。
rsync -avn --delete /backup_from /backup_to/
非常に高速なrsyncですが、コピー対象のファイル数が多い場合にはメモリを消費します。rsyncの公式サイトによると、これはコピーするファイルの容量には関係なく、ファイル数に依存するそうです。Linuxでtopコマンドで様子をみていると、あれよあれよという間に2GBの空きメモリが5MBくらいになっちゃいました。Linuxの場合、一度使われたメモリはtopコマンド等で確認できるメモリ利用量からは解放されないのでちょっと不安になります。これは常時運用のサーバを監視している方はご存知かもしれません。実際には空きメモリとしては表示されませんがメモリ不足とかの状況には陥りませんでした。
ちなみに今回は、NASサーバAからNASサーバBに、6万ファイルくらいを一気にコピーしてみました。4時間くらいで終わりました。初回はさすがに時間がかかりますね。
Rubyで行ってみよう
久しぶりに新しいプログラミング言語の習得を試みています。
以前にこの日記にも書きましたが、やはり気になるので、Rubyを勉強しています。
新しい言語の勉強をするのは楽しい。
久しぶりに一からプログラミングをしっかり勉強している感じです。変数とか配列とかから始まったりしている本です。さすがに、これまでの経験とか、いろんな言語の経験から、「ああ、これはあの言語のあの機能のコトを言ってるんだな」という感覚でサクサクと読み進めることができました。
まだ「RubyでWebアプリケーションを作ろう」という段階には来ていないのですが、まずは素数を求める練習問題とか、華氏と摂氏を変換する練習問題とか考えています。アルゴリズム的には難しくもないし、他の言語で書くのは簡単だけど「Rubyではどのように書くのがRubyらしいのか?」ということを考慮して勉強してます。
ここまでの感じでは、Rubyはプログラミング言語としていい感じ。これまでシェルスクリプトでsedやawkを組み合わせていたものや、ちょっと凝ったものだとPerlとかで書いていたスクリプトは、これからはRubyでサクッと行ける感じです。まず感じているのは、イテレータが便利すぎることと、オブジェクト指向でプログラミングすることが直感的に理解というか、体感できる(できそう)なこと。もちろん、複雑な手続きや、おまじない無しに処理を記述できるのも好みです。
とにかく手足のように使え、かつサーバ管理から本格的なWebアプリケーションまで使え、オブジェクト指向もばっちり。そんな言語を習得しておきたいものです。
以前にこの日記にも書きましたが、やはり気になるので、Rubyを勉強しています。
新しい言語の勉強をするのは楽しい。
久しぶりに一からプログラミングをしっかり勉強している感じです。変数とか配列とかから始まったりしている本です。さすがに、これまでの経験とか、いろんな言語の経験から、「ああ、これはあの言語のあの機能のコトを言ってるんだな」という感覚でサクサクと読み進めることができました。
まだ「RubyでWebアプリケーションを作ろう」という段階には来ていないのですが、まずは素数を求める練習問題とか、華氏と摂氏を変換する練習問題とか考えています。アルゴリズム的には難しくもないし、他の言語で書くのは簡単だけど「Rubyではどのように書くのがRubyらしいのか?」ということを考慮して勉強してます。
ここまでの感じでは、Rubyはプログラミング言語としていい感じ。これまでシェルスクリプトでsedやawkを組み合わせていたものや、ちょっと凝ったものだとPerlとかで書いていたスクリプトは、これからはRubyでサクッと行ける感じです。まず感じているのは、イテレータが便利すぎることと、オブジェクト指向でプログラミングすることが直感的に理解というか、体感できる(できそう)なこと。もちろん、複雑な手続きや、おまじない無しに処理を記述できるのも好みです。
とにかく手足のように使え、かつサーバ管理から本格的なWebアプリケーションまで使え、オブジェクト指向もばっちり。そんな言語を習得しておきたいものです。
DiskSuite で復活!!
DiskSuiteでミラーリングしてたSunのサーバですが、保守契約のCEさんのヘルプもあって、無事復旧させることができました。
Sunのサーバであまり障害に遭遇したことが無いので、リカバリ系のコマンドについて今回いろいろと勉強になりました。それもこれもIA系のサーバのハード障害、特にHDD系の障害の場合にはBIOSでミラーリングのリカバリとかしちゃうからなんですね。最初はSunって面倒!とか思ったけど、反面、いろいろできるってことなのかもしれません。
以下、備忘録ですが、あまり具体的な記述が無くてすみません。うろ覚えなところは後で補足するかもしれません。
1)DiskSuiteでミラーリングしているサーバのハードディスクが故障した場合。故障したハードディスクを抜いて、正常な方のディスクで起動をかけます。このとき、okプロンプトから ok > booot disk で起動できない場合には、正常な方のディスクを起動ディスクとして指定してあげる必要がある。起動ディスクとして指定できるラベルを調べるには ok > nvalis コマンドを使う。今回は ok > boot disk1 で起動することができた。
2)fsckに入る場合には、fsck -y でエラーがあった場合に自動的にプロンプトに「yes」で応えることができる。今回は途中で大量にエラーが発生していたけど、最終的には完全にリカバリすることができた。
3)OSが起動したらmetadbコマンドで、障害が発生しているディスクをメタデバイスから切り離す。本当はディスクを交換する前にやっておくといいらしい。
4)故障したディスクを交換したら、改めてDiskSuiteでミラーリングの設定を行う。手順としては、(1)フォーマットする。(2)パーティションを、正常な方のディスクと全く同じように作成する、(3)metattachコマンドでミラーリングの設定を行う。という手順になる。
Sunのサーバであまり障害に遭遇したことが無いので、リカバリ系のコマンドについて今回いろいろと勉強になりました。それもこれもIA系のサーバのハード障害、特にHDD系の障害の場合にはBIOSでミラーリングのリカバリとかしちゃうからなんですね。最初はSunって面倒!とか思ったけど、反面、いろいろできるってことなのかもしれません。
以下、備忘録ですが、あまり具体的な記述が無くてすみません。うろ覚えなところは後で補足するかもしれません。
1)DiskSuiteでミラーリングしているサーバのハードディスクが故障した場合。故障したハードディスクを抜いて、正常な方のディスクで起動をかけます。このとき、okプロンプトから ok > booot disk で起動できない場合には、正常な方のディスクを起動ディスクとして指定してあげる必要がある。起動ディスクとして指定できるラベルを調べるには ok > nvalis コマンドを使う。今回は ok > boot disk1 で起動することができた。
2)fsckに入る場合には、fsck -y でエラーがあった場合に自動的にプロンプトに「yes」で応えることができる。今回は途中で大量にエラーが発生していたけど、最終的には完全にリカバリすることができた。
3)OSが起動したらmetadbコマンドで、障害が発生しているディスクをメタデバイスから切り離す。本当はディスクを交換する前にやっておくといいらしい。
4)故障したディスクを交換したら、改めてDiskSuiteでミラーリングの設定を行う。手順としては、(1)フォーマットする。(2)パーティションを、正常な方のディスクと全く同じように作成する、(3)metattachコマンドでミラーリングの設定を行う。という手順になる。


