rsync でバックアップ

rsync コマンドを利用すれば簡単にバックアップが取れる。そこで今回は rsync コマンドにいて説明します。


rsync コマンドの基本

rsync コマンドの使い方は次の通りです。


同一マシン内でのバックアップ

rsync -au  SRC_PATH/  DEST_PATH
  • 「a」
    アーカイブモードで行う(ファイル属性などを保持する)
  • 「u」
    更新分のみコピーを行う
  • SRC_PATH
    コピー元のディレクトリ(絶対または相対パス)
    末尾に「/」を付ける
  • DEST_PATH
    コピー先のディレクトリ(絶対または相対パス)
    末尾に「/」を付けない

マシン間でのバックアップ

rsync -auz  SRC_PATH/  user@host:DEST_PATH
rsync -auz  user@host:SRC_PATH/  DEST_PATH
  • 「a」
    アーカイブモードで行う(ファイル属性などを保持する)
  • 「u」
    更新分のみコピーを行う
  • 「z」
    マシン間での転送は圧縮して行う
  • 「user」
    マシンに接続するユーザーアカウント
  • 「host」
    接続するマシン名称または IP アドレス
  • SRC_PATH
    コピー元のディレクトリ(絶対または相対パス)
    末尾に「/」を付ける
  • DEST_PATH
    コピー先のディレクトリ(絶対または相対パス)
    末尾に「/」を付けない

「user@host:PATH」では host マシンの user にログインした状態ですので、続くパス(PATH)は相対パスまたは絶対パスになります。

基本的に「ssh」接続になりますので、「~/.ssh/known_hosts」に対象マシンがあるかどうかで挙動が変わります。


マシン間でのバックアップを自動化

異なるマシン間でバックアップを取る時、通常はパスワードが聞かれます。

この時、パスワード入力はキーボード入力で行われるので、通常のバッチファイルで行う場合は一工夫必要です。

パスワードファイルを作成して行う

パスワード記載したファイルを「FILE」として保存し、「--password-file=FILE」を使用する

rsync -auz --password-file=FILE  SRC_PATH/  user@host:DEST_PATH
rsync -auz --password-file=FILE  user@host:SRC_PATH/  DEST_PATH

expect コマンドを使用して行う

expect -c 'spawn rsync -auz --password-file=FILE  SRC_PATH/  user@host:DEST_PATH ; expect "password:" ; send "PASSWORD\n" ; expect wait'
expect -c 'spawn rsync -auz --password-file=FILE  user@host:SRC_PATH/  DEST_PATH ; expect "password:" ; send "PASSWORD\n" ; expect wait'

PASSWORD」の部分にパスワードを指定

sshpass コマンドを使用して行う

sshpass -p "PASSWORD" rsync -auz --password-file=FILE  SRC_PATH/  user@host:DEST_PATH
sshpass -p "PASSWORD" rsync -auz --password-file=FILE  user@host:SRC_PATH/  DEST_PATH

PASSWORD」の部分にパスワードを指定

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です