rsyncを使ってバックアップ

普段キーボードもディスプレイも繋いでいないサーバのデータをバックしようとしたら、CDで起動するまるごとバックアップアプリは使用できない。

ArchLinuxのArchWikiには、以下のように記載されている。
SSH を使った自動バックアップ
SSH を使ってリモートホストにバックアップする場合、以下のスクリプトを使用:
/etc/cron.daily/backup
#!/bin/bash
rsync -a –delete -e ssh
/folder/to/backup remoteuser@remotehost:/location/to/backup &> /dev/null

でも、問題が3つほどある。

  • バックアップ先(リモートホスト)のディスクを外付けHDD(USBなど)するために特権ユーザにならなければならない。
  • バックアップ元(サーバ)のデータをできるだけまるごと(すなわちrootしかアクセスできないデータ)コピーしたい。
  • SSHサーバはrootログインを禁じている。

参考:
UnixPower on Networking

1.サーバ側の設定

(1)一般ユーザでサーバにアクセス

$ ssh 一般ユーザ@IPアドレス

(2) rootのsshディレクトリを作成してすでに使っている公開鍵をそこに移動.必要なパーミッションを設定//

$ su
# mkdir ~/.ssh
# chmod 700 ~/.ssh
# cp /home/一般ユーザ/.ssh/authorized_keys ~/.ssh
# chmod 600 ~/.ssh/authorized_keys
//sshd_configファイルでrootでのアクセスを許可するよう設定し、SSHDを再起動する//
# nano /etc/ssh/sshd_config
PermitRootLogin yes
PubkeyAuthentication yes
//これだけで良いと思われたが、どうしてもPermission denied (publickey).エラーが発生した。//
PasswordAuthentication yes
# systemctl restart sshd.service

2.リモートホスト側での準備

特権ユーザ用の専用ディレクトリを作成し、すでにある秘密鍵をコピー、パーミッションを設定

$ su
# mkdir ~/.ssh
# cp cp /home/一般ユーザ/.ssh/id_rsa ~/.ssh/
# chmod 600 ~/.ssh/id_rsa
# exit

3.コマンドラインから実行

(1)主なrsync オプション

  • -a =>-rlptgoD オプションと同義 (recursive, links, perms, times, group, owner, devices)
  • –delete => サーバにないファイルをリモートホスト側で削除
  • –exclude={ } => バックアップの対象としない
  • -e “ssh -p ポート番号 -i 秘密鍵” => rsyncにSSH(オプションあり)を使うようにする。
  • root@IPアドレス:/ 特権ユーザの接続先 => バックアップするディレクトリ

(2)実際のコマンド

sudo rsync -a --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/home/一般ユーザ/.cache/*","/lost+found"} -e "ssh -p ポート番号 -i /root/.ssh/id_rsa" root@IPアドレス:/ /保存に使用するディスクとディレクトリ

“rsyncを使ってバックアップ” への1件の返信

  1. ピンバック: 蔵風人

コメントを残す

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