Raspberry PiはSDカード/マイクロSDカードを使って動いているわけですが、これが壊れる。壊れるとどうなるかというと、データが吹っ飛んで絶望が味わえる。
SDカードの寿命を延ばすために設定を変えていくつか変更しても、いつか壊れます。サーバーなんかで運用すると、運が悪くて1年、普通2年、ラッキーで3年くらいで壊れると思います。(科学的検証なし!)
ということでUSBメモリで定期的かつ自動に重要ファイルをバックアップするシステムを構築します。
(サーバー用途じゃなければ、あんま気にしなくて良いです)
購入したUSBメモリ 555円
サンディスク USBメモリ 8GB SDCZ33-008G 高速 パッケージ品
Raspberry Piから
sudo apt-get install usbmount
すっごく長い、フリーズしたんじゃないかな?
Processing triggers for man-db …
ここでとまったまま、接続できなくなった。
待てど暮らせど接続できない・・、電源引っこ抜いた。
まだ接続できない。。
USBメモリをはずして電源引っこ抜いた。
接続できるようになった。
sudo apt-get install usbmount E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem. sudo dpkg --configure -a
これでusbmountがインストールできたみたい。
とりあえずUSBメモリを挿入してみる。
df -h Filesystem Size Used Avail Use% Mounted on rootfs 15G 2.8G 12G 20% / /dev/root 15G 2.8G 12G 20% / devtmpfs 239M 0 239M 0% /dev tmpfs 49M 240K 49M 1% /run tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 97M 0 97M 0% /run/shm /dev/mmcblk0p1 56M 9.6M 47M 18% /boot tmpfs 32M 0 32M 0% /tmp tmpfs 16M 0 16M 0% /var/tmp tmpfs 32M 92K 32M 1% /var/log /dev/sda1 7.5G 9.4M 7.5G 1% /media/usb0 cd /media/usb0 ls SanDiskSecureAccessV2.0 SanDiskSecureAccessV2_win.exe
普通に読み込めた。
とりあえずUSBメモリに入っていたファイルを削除する
sudo rm -rf SanDisk*
USBメモリありの状態でリブートできるか試してみると、ちゃんとリブートできたし、USBメモリも認識してる。念のため電源切った状態から試してみる。
sudo shutdown -h now
問題なかった。
起動中にUSBメモリを挿入しても認識できた。
今までSDカードに保存していたサーバーのアクセスログをUSBメモリに保存する。念のためアクセスログを取っているだけなので、SDカードには保存せずに直接USBメモリに保存する。
cd /media/usb0 sudo mkdir log sudo chown www-data:www-data log chown: changing ownership of `log': Operation not permitted
あれ?chownできない。
dmesg |tail sda: sda1 sd 0:0:0:0: [sda] Attached SCSI removable disk sd 0:0:0:0: Attached scsi generic sg0 type 0 FAT-fs (sda1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck. fsck fsck from util-linux 2.20.1 e2fsck 1.42.5 (29-Jul-2012) /dev/mmcblk0p2 is mounted. WARNING!!! The filesystem is mounted. If you continue you ***WILL*** cause ***SEVERE*** filesystem damage. Do you really want to continue<n>? n
もう一度USBメモリを引っこ抜いて挿入して、すぐにdmesg |tailをしてみる
scsi 1:0:0:0: Direct-Access SanDisk Cruzer Fit 1.27 PQ: 0 ANSI: 6 sd 1:0:0:0: Attached scsi generic sg0 type 0 sd 1:0:0:0: [sdb] 15633408 512-byte logical blocks: (8.00 GB/7.45 GiB) sd 1:0:0:0: [sdb] Write Protect is off sd 1:0:0:0: [sdb] Mode Sense: 43 00 00 00 sd 1:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA sdb: sdb1 sd 1:0:0:0: [sdb] Attached SCSI removable disk FAT-fs (sdb1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
USBメモリを自動マウントを参考にしてみる
sudo vim /etc/usbmount/usbmount.conf FILESYSTEMS="vfat ext2 ext3 ext4 hfsplus usbfs" FS_MOUNTOPTIONS="-fstype=vfat,iocharset=utf8,codepage=932,uid=500,gid=500,dmask=000,fmask=011"
試してみるとrootだったのが、フォルダの所有者が500になってた。
あと、フォルダの権限が変わってた。
それでもchownとかchmodとかできない。。
調べてみるとFAT32でフォーマットされていると、Linuxみたいな許可制にはなっていないため、chownとかchmodとかできないって書いてあった。
How do i change permissions on a FAT32 formatted drive?
usbmount.confの設定をデフォルトのに戻しておく。
sudo vim /etc/lighttpd/lighttpd.conf accesslog.filename = "/media/usb0/log/access.log"
lighttpdが起動しない。。
USBメモリにaccess.logが自動的に作られない、マニュアルで作ってもログを書き込まない。。
usbmount.confを再度変更
sudo vim /etc/usbmount/usbmount.conf FS_MOUNTOPTIONS="-fstype=vfat,iocharset=utf8,codepage=932,uid=500,gid=500,dmask=000,fmask=011"
lighttpdが起動するようになった。
ログもちゃんとUSBメモリに記録してくれた。
dmaskとfmaskが鍵を握っているのかな?
なんとなくfmaskって111にしたほうが良いような?
WordPressをUSBメモリにバックアップ
次に、Wordpressを定期的にバックアップできるようにします。
WordPressのプラグイン、BackWPupをインストール、プラグインを有効化
Add new job
Job name: dairy backup
Archive name: backwpup_%Y-%m-%d
Backup to Folder
Save changes
Settings→Logs
Log file folder /media/usb0/wordpress/
Save changes
Jobs
Run now
The HTTP response test get an error “connect() timed out!”
あれ、バックアップができない?
Log file folderをデフォルト値に戻す
Jobs
dairy backup ← Edit
BackWPup Job: dairy backup
Schedule
Start job: with WordPress cron
Scheduler: daily 3 Hour 0 Minute
Save changes
To:Folder
Folder to store backups in: /media/usb0/wordpress/
Save changes
Changes for job dairy backup saved. Jobs overview | Run now
Run nowする。
The HTTP response test get an error “connect() timed out!”
同じエラーでバックアップできない。
プラグインのページにこんな説明文が書いてあった
I get this error message: `The HTTP response test get a error “Connection time-out”`
BackWPup performs a simple HTTP request to the server itself every time you click run now or whenever a backup job starts automatically. The HTTP response test message could mean: * Your host does not allow loop back connections. (If you know what WP_ALTERNATE_CRON is, try it.) * Your WordPress root directory or backup directory requires authetification. Set username and password in Settings->Network. * The Server can’t resolve its own hostname. * A plugin or theme is blocking the request. * Other issues related to your individual server and/or WordPress configuration.
わかりませんー。
BackWPup Settings
Server self connect: The HTTP response test get an error “connect() timed out!”
試行錯誤・・・
試行錯誤・・・
試行錯誤・・・
試行錯誤・・・
できたー!!
Server self connect: Response Test O.K.
早速バックアップ開始。
Job “dairy backup” started.
Job done in 569 seconds.
バックアップに10分近くかかった。
圧縮されて20MBになった。
解凍して中身見てみる!
データベースやら保存した写真やらwordpressのリストアに必要なもの全部入ってる感じ。
使っていないプラグインを削除する。
あと、Temp folderはSDカードのほうに書き込まれてしまうので、
ファイルのバックアップは週1回だけにする。
データベースのバックアップだけ毎日することにした。
肝心の下記のエラーへの対処法ですが、
The HTTP response test get an error “connect() timed out!”
ホスト名でした。
sudo vim /etc/hosts 127.0.0.1 kintarofish.com
これを最後に付け足します。
kintarofish.comのところは各自のホスト名に変更してください。
それだけです。
おそらく自宅サーバーなんかしている人が引っかかる項目だと思います。
参考
BackWPup server self connect error
BackWPupでエラーが出てJobを実行できなかったときのメモ
最後に、SDカード全体をパソコンにイメージファイルでバックアップして完了です。このバックアップは半年に1回くらい手動でやれば十分だと思います。
これでいつかSDカードが壊れたとき、バックアップしたSDカードのイメージファイルをリストアして、BackWpupで定期的にバックアップしたデータベースとファイルでリストアできるので、絶望を味わわなくて済みますよ。
コメントを残す