SlideShare una empresa de Scribd logo
1 de 28
バックアップの自動化
最近していること
• マイクラ
• 他が特にない
• どうしよう
• ある人「鯖の自動バックアップする仕組みを
構築しませんか」
• 僕「すごそう」
• ある人「できるならやっといてくださいー」
• 僕「あ、はい、はい(わからない)」
三┌( ^o^)┘ Google先生
なぜバックアップするのか
重要なファイル
• データが壊れたり
• 誤って削除したり
• 不正に書き換えられたり
→つらみ
▂▅▇█▓▒░(’ω’)░▒▓█▇▅▂うわあああああああ
バックアップ
• バックアップを取っておけばこのような時でも
元に戻せる
→バックアップをとろう!
バックアップするには
自動でバックアップ
↓ ↓
cron rsync
rsync
• UNIXシステムにおいて、差分符号化を使って
データ転送量を最小化し、遠隔地間のファイ
ルやディレクトリの同期を行うアプリケーショ
ンソフトウェアである
• とは
rsync
• ファイルを同期するプログラム
• 差分を検出しそれのみを転送する
– バックアップ目的なら差分が少ないので効率的
• sshなどリモートシェル経由の利用が可能
rsyncの使い方
• 基本:rsync [オプション] コピー元 コピー先
• rsync -a /hoge/ /copy/ とすれば/hoge/ディレ
クトリが/copy/にバックアップされる
• コピー先には外部ストレージなども指定可能
• (リモートホストにバックアップする場合は
rsync -a /hoge/ user@hogehoge.com:copy/)
rsyncのオプション
• -a … アーカイブモード、以下のすべてを指定したのと同じ
• -r … ディレクトリを再帰的にコピー
• -l … シンボリックリンクをDESTで作り直す
• -p … DESTのパーミッションをSOURCEと同じにする
• -t … ファイル転送時修正時間情報もリモートに転送
• -g … DESTの所有グループをSOURCEと同じにする
• -o … DESTの所有者をSOURCEと同じにする
• -D … デバイスファイルとスペシャルファイルを維持する
• --delete … コピー元でファイルを削除するとコピー先でも削除
される
• -v … コピーするファイル名を標準出力
• --update … コピー先を更新してもコピー元で上書きされない
• -n … コピーを行わずコマンドを実行した結果のみ出力(テス
トモード)
rsyncのオプション
• -H …ハードリンクを維持する
• -I … 同じファイルサイズ、修正時間のファイルもアップデートする
• -E … リソースフォークもコピー
• -z … 転送時にgzip圧縮を使用
• -R … 相対パス名を使う
• -e … リモートシェルを指定
• --numeric-ids … 数字のuidとgidを使う
• --exclude=PATTERN … PATTERNに一致するファイルをコピーしない
• --delete-excluded … -excludeオプションで除外するファイルでもDESTにあれば削除
• --bwlimit=KBPS … ファイルの転送に帯域制限をかける(KB/秒)
• --progress … 転送中ファイルの転送速度を表示
• --stats … 転送終了後に統計情報を表示
• --partial .. 同期途中のファイルを残す(デフォルトでは同期中同期できないファイルは削除)
• -h … --progressや—statsで表示される数値をわかりやすい単位に丸める
• --inplace … 同期先ファイルに直接上書きコピーする
rsyncのオプション
基本は
-a --delete
(必要に合わせて-vなど)
cron
• UNIX系システムの常駐プログラム(デーモン)
の一種で、ユーザの設定したスケジュールに
基づいて指定したコマンドやシェルスクリプト
などを自動実行してくれるプログラム。
cron
• 読み方は「クローン」または「クーロン」
• 指定時刻にコマンドを自動実行するプロセス
• 「crontab」というファイルに実行スケジュール
を記述
• crondというデーモンがcrontabに従って実行
crontabの設定
• crontab -e でcronの設定を編集
• 分 時 日 月 曜日 コマンド で指定
• ハイフン(-)で範囲指定やコンマ(,)で複数選
択できる
• *を指定するとすべての値となる
crontabの設定
• crontab -r としてしまうとcronの全設
定が削除されるので注意
– 別ファイルに記述して保存するのが無難
今回
• /home/user/hoge/ディレクトリを
/backups/hoge/にバックアップ
• 実行は1時間ごと
バックアップ方法
• ①rsyncコマンドを記述したスクリプトファイル
の作成
• ②スクリプトファイルをcronで自動実行
• これだけ
簡単!!
①スクリプトファイルの記述
• この内容のbackup.shファイルをテキストエ
ディターで作成し/home/user/に保存
• $chmod u+x backup.sh で実行権限を与える
#!/bin/sh
rsync -va --default /home/user/hoge/ /backups/hoge/
②cronで自動実行
• crontab -e でcrontabを編集(nanoなど)
• 保存し、待つ
• バックアップが実行されています
• 楽しい!! ('ω' )三('ω')三( 'ω')
0 * * * * /home/user/backup.sh
• 僕「自動バックアップできました-」
• ある人「おお」
しかし
• たったの2ステップ
• なんか物足りない
• →自分のPCのファイルを鯖にバックアップす
る方法を考えよう!!
バックアップ方法
• ①sshでサーバーに接続
• ②rsyncコマンドを記述したスクリプトファイル
の作成
• ③スクリプトファイルをcronで自動実行
ssh
• “Secure Shell”の略
• 暗号などを利用し、安全にリモートコンピュー
タと通信するためのプロトコル
• パスワード認証や公開鍵認証
①ssh接続
• cronではいちいちパスワード打てない
→必然的に公開鍵認証
• ssh keygen -t rsa で鍵生成(/.ssh/)
• 生成されたうちid_rsa.pubをバックアップ先の
authorized_keysへ、id_rsaをバックアップ元へ
移動
②スクリプトの作成
③cronで自動化
• この内容のbackup.shファイルを/hoge/user/
に保存
• $chmod u+x backup.sh で実行権限を与える
• crontabに登録
rsync -a --delete /home/user/hoge/
user@hogehoge.com:backups/hoge/
まとめ
• バックアップは大事
ご清聴ありがとうございました

Más contenido relacionado

La actualidad más candente

Bgworkerで簡易クラスタ管理
Bgworkerで簡易クラスタ管理Bgworkerで簡易クラスタ管理
Bgworkerで簡易クラスタ管理
Masahiko Sawada
 
Next-L Enju 開発ワークショップ #10
Next-L Enju 開発ワークショップ #10Next-L Enju 開発ワークショップ #10
Next-L Enju 開発ワークショップ #10
Kosuke Tanabe
 

La actualidad más candente (20)

Bgworkerで簡易クラスタ管理
Bgworkerで簡易クラスタ管理Bgworkerで簡易クラスタ管理
Bgworkerで簡易クラスタ管理
 
CloudFormationと付き合い続けよう
CloudFormationと付き合い続けようCloudFormationと付き合い続けよう
CloudFormationと付き合い続けよう
 
clominal
clominalclominal
clominal
 
MmapScanner
MmapScannerMmapScanner
MmapScanner
 
UbuntuやChromiumの紹介
UbuntuやChromiumの紹介UbuntuやChromiumの紹介
UbuntuやChromiumの紹介
 
JPEG Glitch入門
JPEG Glitch入門JPEG Glitch入門
JPEG Glitch入門
 
西区勉強会 PCのバックアップ・リストアについて
西区勉強会 PCのバックアップ・リストアについて西区勉強会 PCのバックアップ・リストアについて
西区勉強会 PCのバックアップ・リストアについて
 
データテーブルを使った簡易イベントスクリプト
データテーブルを使った簡易イベントスクリプトデータテーブルを使った簡易イベントスクリプト
データテーブルを使った簡易イベントスクリプト
 
PostgreSQL共有バッファと関連ツール
PostgreSQL共有バッファと関連ツールPostgreSQL共有バッファと関連ツール
PostgreSQL共有バッファと関連ツール
 
ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』
 
MySQLのリアルタイムモニタリングツールを作った話
MySQLのリアルタイムモニタリングツールを作った話MySQLのリアルタイムモニタリングツールを作った話
MySQLのリアルタイムモニタリングツールを作った話
 
20220111 SoftwareDesign #32 kitazaki
20220111 SoftwareDesign #32 kitazaki20220111 SoftwareDesign #32 kitazaki
20220111 SoftwareDesign #32 kitazaki
 
membase
membasemembase
membase
 
Blenderを用いたリグ転送実験
Blenderを用いたリグ転送実験Blenderを用いたリグ転送実験
Blenderを用いたリグ転送実験
 
20110205.linux 0.01
20110205.linux 0.0120110205.linux 0.01
20110205.linux 0.01
 
OSv噺
OSv噺OSv噺
OSv噺
 
Jubatus 新機能ハイライト
Jubatus 新機能ハイライトJubatus 新機能ハイライト
Jubatus 新機能ハイライト
 
Next-L Enju 開発ワークショップ #10
Next-L Enju 開発ワークショップ #10Next-L Enju 開発ワークショップ #10
Next-L Enju 開発ワークショップ #10
 
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
 
Presentation on your terminal
Presentation on your terminalPresentation on your terminal
Presentation on your terminal
 

自動バックアップ