CentOS 7 で自宅サーバーを別PCのUSB外付ハードディスクに毎晩自動バックアップ(rsync+ssh)
1 views
実現させる機能
Ubuntu14.04搭載PCのUSB外付ハードディスク(4TB)にCentOS7搭載PCサーバーのバックアップを毎晩自動で取っています。バックアップ先(Ubuntu144.04搭載PC、topi.0t0.jp 192.168.24.240)は、バックアップ元(CentOS7搭載PC、ufuso.dip.jp 192.168.24.241)の諸設定をssh接続で行うクライアントPCでもあるため、topi → ufuso 間をssh接続しながら、同時にtopi ← ufuso間をノンパスワード(鍵方式)でssh接続する設定をしたので混乱。topi.0t0.jpもufuso.dip.jpもユーザー名がtuなので注意。
以下はその手順の備忘録です。
事前準備
※保存先のUbuntu14.04のUSB外付けHardDiskのマウントが済んでいること
バックアップ元からバックアップ先にパスワード省略でssh接続する手順
(0)バックアップ元(CentOS7搭載PC)にsshでログイン(サーバーのキーボードから直接入力作業をする場合には不要)
tu@topi:~$ ssh root@ufuso.dip.jp ← バックアップ先(Ubuntu144.04搭載PC)は、バッ クアップ元(CentOS7搭載PC)の諸設定をssh接続で行うクライアントPCでもあるため、 topi → ufuso 間をssh接続 root@ufuso.dip.jp's password: ← ufuso.dip.jpのrootパスワード入力 Last login: Wed Feb 11 13:44:04 2015 from topi.0t0.jp [root@ufuso ~]# ← 接続に成功するとの$左側部分が変わる。例示の場合はtopiからufuso |
(1)バックアップ元(CentOS7搭載PC)で秘密鍵と公開鍵を作成し、公開鍵を送付
[root@ufuso ~]# ssh-keygen -t dsa ← 認証用の鍵の作成 Generating public/private dsa key pair. ← 公開鍵と秘密鍵の作成 Enter file in which to save the key (/root/.ssh/id_dsa): ← 鍵の保存先フォ ルダ Enter passphrase (empty for no passphrase): ← エンターキー押下 Enter same passphrase again: ← エンターキー押下 Your identification has been saved in /root/.ssh/id_dsa. ← 秘密鍵の保存先 Your public key has been saved in /root/.ssh/id_dsa.pub. ← 公開鍵の保存先 The key fingerprint is: f6:e6:c0:1e:3c:fe:ab:2d:e2:4f:82:30:db:d0:dd:81 root@ufuso.dip.jp The key's randomart image is: +--[ DSA 1024]----+ | | | . | | E . | | . . . . | | + . . S | | * . + . | | . o . B o | | .=.B | | ..o=+=. | +-----------------+ [root@ufuso ~]# pwd ← 現在のディレクトリの場所を確認 /root ← rootのフォルダであることを確認 [root@ufuso ~]# cd .ssh ← .sshフォルダに移動 [root@ufuso .ssh]# ls ← フォルダ内を参照 id_dsa id_dsa.pub known_hosts [root@ufuso .ssh]# scp id_dsa.pub tu@topi.0t0.jp: ← sshを使ってid_dsa.pubファイ ルをtopi.0t0.jp側(バックアップ先)のtuフォルダにコピー(scp) tu@topi.0t0.jp's password: ← tuのパスワード入力 id_dsa.pub 100% 605 0.6KB/s 00:00 ← コピー完了 [root@ufuso .ssh]# exit ← ssh接続の解除 ログアウト Connection to ufuso.dip.jp closed. tu@topi:~$ ← ssh接続の解除で接続元のtopi.0t0.jpのPCに戻る |
(2)バックアップ先(Ubuntu144.04搭載PC)の作業手順
tu@topi:~$ pwd ← 現在のディレクトリの場所を確認 /home/tu ← tuのフォルダであることを確認 tu@topi:~$ mkdir .ssh ← tuフォルダ内に.sshフォルダを作成 tu@topi:~$ cd .ssh ← .sshフォルダに移動 tu@topi:~/.ssh$ cat ~/id_dsa.pub >> authorized_keys ← id_dsa.pubを authorized_keysに名称変更して、.sshフォルダ内に保存 tu@topi:~/.ssh$ chmod 600 authorized_keys ← authorized_keysの読み書きを所有者 に限定6は所有者、0はグループ、0はその他の権限。6は読み書き可、4は読みのみ、0は読 み書き不可 tu@topi:~/.ssh$ sudo apt-get -y install openssh-server ← openssh-serverのイン ストール パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 openssh-server は既に最新バージョンです。 root@topi:~# vi /etc/ssh/sshd_config ← openssh-serverの編集 ... # Authentication: LoginGraceTime 120 PermitRootLogin without-password StrictModes yes RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys ← 行頭の#を削除 ... root@topi:~# /etc/init.d/ssh restart ← 再起動 |
(3)バックアップ先(Ubuntu144.04搭載PC)からsshでログイン(サーバーのキーボードから直接入力作業をする場合には不要)
tu@topi:~/.ssh$ ssh root@ufuso.dip.jp ← root@ufuso.dip.jpにtuでssh接続 root@ufuso.dip.jp's password: ← ufuso.dip.jpのrootパスワードを入力 Last login: Wed Feb 11 14:27:04 2015 from topi.0t0.jp |
(4)バックアップ元(CentOS7搭載PC)からsshでノンパスワードででログイン
[root@ufuso ~]# ssh tu@topi.0t0.jp ← topi.0t0.jpにtuでssh接続
Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-45-generic x86_64)
* Documentation: https://help.ubuntu.com/
Last login: Wed Feb 11 15:06:25 2015 from ufuso.dip.jp
tu@topi:~$ exit ← topi.0t0.jpへの接続解除
ログアウト
Connection to topi.0t0.jp closed.
※ノンパスでログインできなかった場合は再度sshでログイン。その際パスワードを
求められなければOK。
|
バックアップ機能の導入手順
(1)バックアップ先(Ubuntu144.04搭載PC)の作業手順
root@topi:~# mkdir /mnt/2EF8DE49F8DE0F49/backup/CentOS7 ← サーバーのバックアップ先を作成します。「/mnt/2EF8DE49F8DE0F49/backup/Cent OS7」は例示。2EF8DE49F8DE0F49はUSB外付けハードディスクのUIDをフォルダ名にしたもの root@topi:~# chmod 777 /mnt/2EF8DE49F8DE0F49/backup/CentOS7 ← CentOS7フォ ルダに書き込み権限を付与 |
(2)バックアップ元(CentOS7搭載PC)の作業手順
[root@ufuso ~]# yum -y install rsync ← バックアップに必要なrsyncのインストール 読み込んだプラグイン:fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp パッケージ rsync-3.0.9-15.el7.x86_64 はインストール済みか最新バージョンです 何もしません ← すでにインストール済み。 [root@ufuso ~]# vi /etc/rsync_exclude.lst ← バックアップから除外するフォルダやファイ ルの一覧リストを、「rsync_exclude.lst」という名称で作成する。 - /var/tmp/* ← 「/var/tmp/」のフォルダの中身をすべて(*)バックアップから除外 (-)する。 - /dev/* - /media/* - /mnt/* - /proc/* - /sys/* - /tmp/* [root@ufuso ~]# rsync -avn --exclude-from=/etc/rsync_exclude.lst / ssh tu@topi.0t0.jp:/mnt/2EF8DE49F8DE0F49/backup/CentOS7/ ← サーバー全体(/)をCentOS7フォルダにバックアップできるかテストする。 sending incremental file list rsync: link_stat "/home/tu/ssh" failed: No such file or directory (2) ./ boot/ ... ... ... var/www/html/rain/rainloop/v/1.7.2.229/themes/Xv/ var/www/html/rain/rainloop/v/1.7.2.229/themes/Xv/images/ var/yp/ sent 79574689 bytes received 934844 bytes 2927619.38 bytes/sec total size is 140740566021056 speedup is 822.36 (DRY RUN)← 「(DRY RUN)」は、上 記 -avnのオプションにn(テストラン)があるので、同期を行わず対象フォルダやファイル を一覧表示しただけ、という意味。 [root@ufuso ~]# rsync -av --exclude-from=/etc/rsync_exclude.lst / ssh tu@topi.0t0.jp:/mnt/2EF8DE49F8DE0F49/backup/CentOS7/ ← ファイルのバックアップを実施 sending incremental file list rsync: link_stat "/home/tu/ssh" failed: No such file or directory (2) ./ boot/ ... ... ... var/www/html/rain/rainloop/v/1.7.2.229/themes/Xv/ var/www/html/rain/rainloop/v/1.7.2.229/themes/Xv/images/ var/yp/ sent 79574689 bytes received 934844 bytes 2927619.38 bytes/sec total size is 140740566021056 speedup is 1748123.00 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1052) [sender=3.0.9]) [root@ufuso ~]# yum -y install cronie-noanacron ← crontabをインストール インストール: cronie-noanacron.x86_64 0:1.4.11-11.el7 完了しました! [root@ufuso~]# vi /etc/crontab ← crontabに設定を追加する。 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * command to be executed # DDNS Dynamic DO!.jp Update 0 8 2 * * root wget -q -O - 'http://free.ddo.jp/dnsupdate.php?dn=your.ddo.jp domain&pw=your-password 0 4 * * * root rsync -av --exclude-from=/etc/rsync_exclude.lst / ssh tu@topi.0t0.jp:/mnt/2EF8DE49F8DE0F49/backup/CentOS7/ ← 毎日午前4時に同期(差分コピー)を取るように設定を追加。 |
同期が終わるとメールが飛んでくる
USBハードディスクの最新情報(パソコン&テレビ両用が主流)
[csshop service=”amazon” keyword=”USB外付けハードディスク TB” category=”” sort=”+price” mode=””]