サーバーエンジニアとネットワークエンジニアは同一の作業が割り当てられがちですが、どちらも非常に膨大な知識量が必要になるため、どちらかは長けているが、反対の片方は苦手というエンジニアも少なくないようです。
これらを全て学問的に詳しくなる必要はなく、ポイントは運用が出来ることと、トラブル対応が出来ること。
少し上級になると、設計ができるという事に主眼を置けば、わざわざ学校に通わなくても、OJTでも十分に技術習得できるでしょう。
まあ、プログラマーも全く同じことが言えるので、これに限ったことでは無いんですけどね。
運用で必須のrsync
そして、サーバー、ネットワークを含めてインフラ関連の運用を行う時に必要になってくるスキルとして「rsync」があります。
現役エンジニアの人であれば、rsyncがコマンドラインである事や、便利すぎる機能である事を承知していると思いますが、この機能が中々深いので、僕の運用実績のメモをまとめる為に、備忘録ブログを書いておきます。
rsyncを知る
## rsyncで出来ること
・ファイルのバックアップをとる
・データの同期をとる
・ディレクトリ間の差分を出力する
バックアップも同期も同じように思えますが、サーバーを冗長化して、データやプログラムを同期してミラーリング構造を実現する時にrsyncが使われます。
単なるデータコピーだけであればscpコマンドと同じなんですが、rsyncはとにかく多機能であるので、利用するエンジニアが多いんでしょうね。
基本構文
$ rsync [option] コピー元 コピー先
基本構文は、下記リンクで確認してください。
サーバーのよく使うコマンドメモ「rsync」
よく使うオプション
--dry-run : テスト実行(実際にはコピーされません)
—remove-source-files : 転送後に元ファイルを削除する
実践編
多段認証対応
$ rsync -avP -e 'ssh -o ProxyCommand="ssh -l srv -i ~/%鍵% **@%コピー元domain% -W %h:%p -q"' %転送先domain%:%転送先階層% ./ --dry-run
※実際にコピーされないように「--dry-run」オプションを付けてますが、実際に実行したい場合は、このオプションを取り除いてください。
めちゃくちゃ大量にあるファイルをrsyncしようとするとエラーがでる時の対処法
対応
rsyncをfind-xargsを使って効率よく使う
ファイル検索だけ
/var/log 以下の*.gzファイルを一括取得
$ find find /var/log/ -type f -name ‘*.gz'
rsyncだけ
$ rsync -av *** user@server-host:/backup/*server/
* 条件として、鍵認証が行えて、パスワード入力が無いことが条件
xargsを使って連動
/var/log 以下の*.gzファイルを一括で、バックアップサーバーの特定フォルダに保存する
$ find find /var/log/ -type f -name ‘*.gz’|xargs -I{} rsync -av {} *user*@*server-host*:/backup/*server*/
各種リンク
rsyncのサンプル例集
http://qiita.com/nagais/items/7403411b4aa193d0fa0d
サンプルあります
とりあえずrsync
http://qiita.com/bezeklik/items/22e791df7187958d76c1
基本オプションが参考になります
rsync でディレクトリの同期(バックアップ)
http://www.maruko2.com/mw/rsync_でディレクトリの同期(バックアップ)
オプションが詳しく書かれています
0 件のコメント:
コメントを投稿