Raspberry Piは、一連の小型シングルボードコンピューターです。それらはかなり安価であり、バックアップサーバーまたはVoIPサーバーの実行に適しています。 2015年2月にRaspberryPi2がリリースされました。より多くのRAM、新しいCPUを備え、4つのオンボードUSBポートを備えています。
RaspberryPi2の現在の価格は35ドルです。ただし、それに加えて、他にもいくつか必要なものがあります。
- microSDカード:Raspberry Pi 2を起動するには、microSDカードが必要です。いずれも4GB以上で行う必要があります。バックアップサーバーの場合、4GBで十分です。速く読めるものを手に入れたいと思うかもしれません。
- マイクロUSB充電器:また、そのための電源が必要になります。マイクロUSBポートを搭載しているため、自宅に古い携帯電話の充電器があり、もう必要ありません。
- 外部USBストレージ:このハウツーはバックアップサーバーのセットアップに関するものであるため、外部USBストレージも取得する必要があります。外付けの512GBハードディスクで十分かもしれませんし、4TBドライブが必要かもしれません。ストレージのニーズはこれですべてです。
- ケーシング:最後はケーシングです。厳密にはケーシングは必要ありませんが、ケーシングを使用しない場合は、メインボード全体がどこかに配置されているだけで、損傷する可能性が高くなります。
したがって、合計コストは35ドルのようになります。-RaspberryPiの場合は約10ドル、microSDカードの場合は約10ドル、ケースの場合は約10ドルです。マイクロUSB充電器はおそらく持っているので何もありません。 USBドライブのコスト。
また、バックアップを取得するためにsambaをセットアップし、共有は必要な資格情報なしで読み取り専用モードになっています。このガイドに従って適切に構成されている場合、LAN内でのみ使用可能であり、LAN外からの接続試行を拒否します。また、sambaユーザーとさまざまな資格情報を設定すると、このハウツーの範囲を超えてしまいます。それを説明するハウツーは他にもたくさんあり、必要に応じて簡単に組み込むことができます。
RaspberryPiをバックアップサーバーとして設定する
Raspberry Piをバックアップサーバーとして設定することは、最初にイメージをフラッシュしてからすべてを準備する必要があるため、その「最も」難しい部分です。ただし、ステップバイステップガイドで説明します。
1。 RaspianImageをダウンロード
まず、現在のRaspianImageをここからダウンロードしますhttps://www.raspberrypi.org/downloads/
2。画像をmicroSDカードにフラッシュします
画像をダウンロードしたら、microSDカードにフラッシュする必要があります。これを行うための優れたガイドがすでに存在するため、ここでこれを繰り返す意味はありません。ここでGUIDに従うのが最善です
3。初回起動/構成
RaspianImageでRaspberryPiをフラッシュした後、HDMI画面を接続して起動します。最初の起動時に、構成画面が表示されます。その構成画面は非常に単純であり、設定する必要があることがいくつかあります。
免責事項:写真は携帯電話で撮影されたものなので、それほど素晴らしいものではありません。
4。ファイルシステムを展開
まず、SDカードの全スペースを利用できるようにします。バックアップの場合、とにかく外付けドライブに保存されるため、実際には問題ではありません。しかし、私は利用可能なスペースを持っているのが好きです。したがって、[1ファイルシステムの展開]を選択すると、次回の再起動時にファイルシステムが展開されるという通知が表示されます。
5。ユーザーパスワードの変更
次に、ユーザー「pi」のデフォルトのパスワードを変更します。したがって、[2ユーザーパスワードの変更]を選択し、目的のパスワードを2回入力します。そのたびに、Enterキーを押します。ここでも、パスワードが変更されたという通知が表示されます。
6。コンソールログイン
その後、GUIを開始しないようにします。したがって、[3デスクトップ/スクラッチへの起動を有効にする]を選択します。次の画面で、[コンソールテキストコンソール]を選択し、ログインが必要です(デフォルト)。
7。ローカリゼーション
次に、システム言語と他の使用可能な言語、キーボードレイアウトなどを設定します。そのために、4つの国際化オプションに入ります。これを入力すると、言語、タイムゾーン、キーボード言語を変更するように表示されます。ダイアログはすべて簡単なので、これ以上詳しくは説明しません。
注意:これらのオプションのいずれかを選択した場合は、メインの構成画面が再び表示されます。
8。詳細オプション
次に、8。詳細オプションに進みます。設定できるものがもう1つあります。重要な3つは、A2ホスト名、A3メモリ分割、A4SSHです。
9。ホスト名を設定する
ホスト名を使用すると、LAN上のホスト名でRaspberryPiにアクセスできます。注意:使用できるのは文字と数字のみです。この例では、ホスト名rpi2bu(Raspberry Pi 2 Backupの略)として使用していますが、それはすべてあなた次第です。
10。メモリ分割
このRaspberryPiをバックアップサーバーとして実行したいので、GPUで貴重なRAMを無駄にしたくありません。注意:これはヘッドレスサーバーです。したがって、ラム分割を16MBに設定します。
11。 OpenSSHサーバーを有効にする
sshを介してrsyncを使用してバックアップを実行し、sshアクセスはRaspberry Piのremonte管理に適しているため、詳細オプションメニューでOpenSSHサーバーも有効にします。
11。終了して再起動
これで、設定画面から設定できるものがすべて揃い、
12。必要なパッケージを更新してインストールする
Raspberry Piをバックアップサーバーとして使用するには、rsyncとsambaの2つの追加パッケージをインストールする必要があります。 Rsyncは、Windows / Linuxコンピューターからファイルを同期するツールであり、Sambaはバックアップをネットワーク上で利用できるようにします(読み取り専用モード)。
常に多くの変更と更新が行われるため、最初に実行します:
sudo apt-get update && sudo apt-get upgrade
次に、必要なパッケージを次の方法でインストールします:
sudo apt-get install rsync samba
注意:デフォルトのユーザーpiは、sudoコマンドを使用してrootとしてシステムコマンドを実行できます。 sudoコマンドを使用すると、ログインパスワードの入力を再度求められます。このパスワードもしばらくの間キャッシュされるため、2つのsudoコマンドを順番に実行すると、パスワードが入力されたときにのみトリガーされます。
13。リモートSSH接続またはRaspberryPiで続行します
次の手順は、RaspberryPi自体またはssh接続を介して実行できます。私はssh接続を好み、LinuxではKDEでKonsoleを使用しています。 Windowsでは、PuttyまたはKittyを使用できます
14。外付けUSBドライブを見つけてフォーマットする
sambaサーバーを構成する前に、外部USBドライブをマウントし、バックアップユーザーを作成する必要があります。外付けUSBドライブをマウントする前に、フォーマットしてUUIDであることを確認する必要があります。したがって、外付けUSBドライブを接続する前に、次のコマンドを実行します。
ls -al /dev/disk/by-uuid
そしてそれは次のようなものを返します:
total 0 drwxr-xr-x 2 root root 100 Mai 19 18:22 . drwxr-xr-x 6 root root 120 Jan 1 1970 .. lrwxrwxrwx 1 root root 15 Mai 19 18:22 13d368bf-6dbf-4751-8ba1-88bed06bef77 -> ../../mmcblk0p2 lrwxrwxrwx 1 root root 15 Mai 19 18:22 15CD-3B79 -> ../../mmcblk0p1
次に、外付けUSBドライブを接続して、コマンドを再実行します。ご覧のとおり、結果は異なり、新しいデバイスがあります。
total 0 drwxr-xr-x 2 root root 100 Mai 19 18:22 . drwxr-xr-x 6 root root 120 Jan 1 1970 .. lrwxrwxrwx 1 root root 15 Mai 19 18:22 13d368bf-6dbf-4751-8ba1-88bed06bef77 -> ../../mmcblk0p2 lrwxrwxrwx 1 root root 15 Mai 19 18:22 15CD-3B79 -> ../../mmcblk0p1 lrwxrwxrwx 1 root root 10 Mai 19 18:22 eac53de3-9f06-4e46-999c-684da279298b -> ../../sda1
これは私たちに2つのことを教えてくれます。新しいデバイスは/dev/ sda1で、uuidはeac53de3-9f06-4e46-999c-684da279298bです。複数のディレクトリをアタッチすると、sda1が変更される可能性があります。したがって、後でマウントするために、パーティションが変更されていないか、パーティションがフォーマットされている限り変更されないUUIDを使用しますが、パーティションを適切なファイルシステムにフォーマットしようとしています。
使用する前に、このドライブをフォーマットする必要があります。私はext4を好みますが、スナップショットと整合性チェックのためにbtrfsを好む人もいるかもしれません。 ext4としてフォーマットするには、次のコマンドを実行するだけです:
sudo mkfs.ext4 /dev/sda1
警告:適切なデバイスラベルを使用してください。そうしないと、別のデバイスのデータが破壊される可能性があります。
前述のように、フォーマットするとUUIDも変更されるため、前述のコマンドを再度発行して、新しいUUIDに注意する必要があります。
15。外付けUSBドライブをマウントする
次は、マウントする必要があります。ここで、マウントする場所を決定する必要があります。ドライブをバックアップユーザーのホームディレクトリにマウントすることを選択しました。必要に応じて、/homeとしてマウントすることもできます。ただし、実行するバックアップが複数ある場合は、それらを個々のドライブに作成するのが好きです。したがって、1人のユーザー=1台のドライブであり、ドライブはユーザーのホームディレクトリにマウントされます。 Rasperry Piでは、4つのUSBデバイスを直接接続できるため、必要に応じて別のユーザーに簡単に拡張できます。マウントする前に、それに応じてバックアップユーザーを追加します。この方法では、そのユーザーをbuと呼びます。そのユーザーを作成するには、次のコマンドを実行します。
sudo adduser bu
そのユーザーのパスワードを入力するように再度2回求められます。
ユーザーが追加されると、次のコマンドを使用して外付けドライブを簡単にマウントできます。
sudo mount /dev/sda1 /home/bu
ただし、使用する前に、最後の1つの手順を実行する必要があります。マウントされたフォルダの所有権をbuユーザーにも変更する必要があります:
sudo chown bu:bu /home/bu
これで、外付けUSBドライブをマウントし、それに応じた権限を設定しました。次のコマンドを実行すると、/ dev/sda1が/home/ bu
にマウントされていることがわかります。df -h
Filesystem Size Used Avail Use% Mounted on rootfs 15G 2.4G 12G 18% / /dev/root 15G 2.4G 12G 18% / devtmpfs 484M 0 484M 0% /dev tmpfs 98M 236K 98M 1% /run tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 195M 0 195M 0% /run/shm /dev/mmcblk0p1 56M 19M 37M 34% /boot /dev/sda1 2.7T 260M 2.6T 1% /home/bu
私はすでに外付けUSBドライブにいくつかのテストデータを持っているので、それは私がすでに260MBを使用したことを示しています。新しいドライブでは、ゼロになるはずです。
16。起動時に外付けUSBドライブをマウントする
すべてが見つかったようですが、再起動後、外付けUSBドライブはマウントされなくなりました。通常は/etc/ fstabにエントリを追加するだけですが、起動が速く、USB検出が遅すぎるという問題があります。解決策はかなり簡単です。
編集:/boot/cmdline.txt
次の行が含まれていることがわかります:
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
これにrootdelay=10を追加するだけで、今のように見えます:
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait rootdelay=10
次に/etc/ fstab
を編集しますこれをそのファイルの最後に追加します
UUID=eac53de3-9f06-4e46-999c-684da279298b /home/bu ext4 defaults 0 2
もちろん、上記の例で示したものではなく、独自のUUIDを使用してください。
これで、再起動後も外付けUSBドライブが/ home/buにマウントされるようになりました。私がテストしたことのない複数のUSBデバイスを接続し、それらすべてを適切に追加していないことに気付いた場合は、rootdealyを10以上に拡張する可能性があります。
17。 Sambaを構成する
次に、ネットワーク上ですべてのバックアップを利用できるようにsambaを構成します。 Sambaは、smbプロトコルを使用してWindowsからもアクセスできるネットワーク共有を提供するデーモンです。
/etc/samba/smb.confを編集して、構成ファイルのコンテキストを次のように置き換えるだけです。
[global] workgroup = WORKGROUP server string = %h server ; wins support = no ; wins server = w.x.y.z dns proxy = no ; name resolve order = lmhosts host wins bcast name resolve order = bcast lmhosts host wins socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE ; interfaces = 127.0.0.0/8 eth0 ; bind interfaces only = yes hosts allow = 127.0.0.1, 10.0.0.0/24 hosts deny = 0.0.0.0/0 log file = /var/log/samba/log.%m max log size = 1000 # syslog only = no syslog = 0 panic action = /usr/share/samba/panic-action %d security = user encrypt passwords = true map to guest = bad user guest account = bu # valid users = root #======================= Share Definitions ======================= [Backup] comment = Backup Share path = /home/bu read only = yes guest only = yes guest ok = yes hosts allow = 127.0.0.1, 10.0.0.0/24 force user = bu force group = bu hosts deny = 0.0.0.0/0
LANの外部に何もリークされないようにするために、グローバルセクションですべてのIPアドレスを拒否し、ローカルホストとLANのみを許可するように設定しました。 LANには10.0.0.xを使用しています。 192.168.0.0を使用している可能性が高いため、それに応じて変更してください。
また、グローバルセクションでは、ゲストアカウントがbuユーザーであり、実際の共有では、ゲストがアクセス権を持ち、読み取り専用アクセスであることがわかります。
ファイルを保存して終了し、sambaを再起動します:
sudo /etc/init.d/samba restart
これで、サービスの構成は完了していません。
18。 RaspberryPiのバックアップ制御ファイル
/home/bu/backups.shを作成および編集し、次のコンテンツを入力します。
#!/usr/bin/env bash basePath="/home/bu" action="${1}" function checkMonth () { now=$(date +"%Y-%m") last=$(<checkMonth.txt) if [[ ${now} != ${last} ]] then # New Month mkdir -p "${basePath}/current/" rm -Rf "${basePath}/current/"* echo "${now}" > "checkMonth.txt" fi } function makeHardlink () { # Make hardlink copy now=$(date +"%Y-%m-%d_%H-%M") mkdir -p "${basePath}/old/${now}" cp -al "${basePath}/current"* "${basePath}/old/${now}" } function checkFree () { # Check if old files need to be deleted freeSpace=$( df -P | grep "${basePath}" | awk '{print $4}' ) curUse=$( cd "${basePath}/current" | du -s | awk '{print $1}' ) estUse=$(( curUse * 2 )) echo "${freeSpace} - ${curUse} - ${estUse}" while [[ ${freeSpace} -le ${estUse} ]] do echo "Not enough space... removing old backups..." IFS= read -r -d $'\0' line < <(find "${basePath}/old" -type d -maxdepth 1 -printf '%[email protected] %p\0' 2>/dev/null | sort -z -n) oldDir="${line#* }" rm -Rf "${oldDir}" freeSpace=$( df -P | grep "${basePath}" | awk '{print $4}' ) echo "${freeSpace} - ${curUse} - ${estUse}" done } case ${action} in newMonth) checkMonth ;; hardLink) makeHardlink checkFree ;; esac
このスクリプトには2つの目的があります。各バックアップの前後に実行する必要があります。
checkMonth関数は、最後のバックアップから新しい月があるかどうかを確認します。ご存知のように、ハードディスクが破損したり、ハードディスクの一部が故障したりする可能性があります。その場合、破損したセクターのデータファイルにアクセスできなくなります。ただし、毎回完全バックアップを作成するには、大量のディスクスペースが必要です。ディスクスペースを節約するために、バックアップをハードリンクします。つまり、同じデータを指す新しいファイルシステムの「インデックス」ファイルのみを書き込みます。したがって、データセクターが破損した場合、すべてのハードリンクされたファイルが同じデータを指しているため、ファイルを取得できなくなります。そのリスクを最小限に抑えるために、毎月完全に新しいバックアップセットが作成されるようにしています。これはあなたの収納スペースで食べます。例えば。 400 GBのデータがある場合、それは1か月目に400GB以上の変更されたファイルを使用することを意味します。 2か月目には、さらに400GB以上の変更されたファイルなどを使用します。
これは、新しい月の最初の同期と最初の同期に長い時間がかかることも意味します。他のすべては速いです。
makeHardlink関数は、実際に最後のバックアップのハードリンクコピーを作成します。ハードリンクコピーはほとんどスペースを必要とせず、バックアップでは、新しいファイルのみが新たに書き込まれます。また、ハードリンクコピーと組み合わせて、checkFree関数を実行します。
checkFree関数は、/ home/buの空き領域をチェックします。また、最後のバックアップまでに使用されたサイズをチェックします。空き領域が最後のバックアップの2倍未満の場合、その空き領域が再び2倍になるまで、古いバックアップの削除を開始します。バックアップしたいデータがすでに400GBある場合、翌日/次のバックアップ時に800GBを超える可能性は低いと思いがちです。
これは、このバックアップメカニズムを「永久に」使用できることを意味します。空き容量が少なくなりすぎると、古いバックアップが自動的に削除されます。
そのスクリプトを保存した後、スクリプトを実行可能にし、所有権をbuユーザーに変更します。
sudo 0755 /home/bu/backups.sh
sudo chown bu:bu /home/bu/backups.sh
ラズベリーパイ側は以上です。
LinuxからRasperryPiへのバックアップの作成
Raspberry Piにバックアップを作成するには、現在のユーザー(または必要に応じてroot)をRaspberryPiバックアップユーザーアカウントに追加するだけです。
sshクライアントがすでにインストールされていて、使用できる公開鍵があることを前提としています。最終的には、最初にrsyncをインストールする必要があります。
19。公開sshキーを作成する
これまでに公開鍵がない場合は、公開鍵を作成します。
ssh-keygen -t rsa -b 4096 -C "[email protected]"
もちろん、メールに置き換えるか、必要に応じて何でも入力してください。
20。公開sshキーをRasperryPiバックアップユーザーにコピーします
次に、公開鍵をRaspberryPiバックアップユーザーアカウントにコピーする必要があります。
ssh-copy-id ~/.ssh/id_rsa.pub [email protected]
buとrpi2buを実際のバックアップユーザーとホスト名に置き換えます。何らかの理由でRaspberryPiをホスト名で検出できない場合は、そのIPアドレスを使用してください。
21。デスクトップにバックアップスクリプトを作成する
パスワードを入力しなくてもRaspberryPiにログインできるようになったので、バックアップを実行する小さなbashスクリプトが必要です。デスクトップにbackup.shを作成します。
〜/ Desktop / backup.sh "を編集して、これを追加します
#!/usr/bin/env bash # Check for new month ssh [email protected] '/home/bu/backups.sh newMonth' # Run rsync backup rsync -avzpH --partial --delete ~/ [email protected]:/home/bu/current/ # Make backup and check regarding free space ssh [email protected] '/home/bu/backups.sh hardLink'
次に、実行可能にします:
chmod 0755 ~/Desktop/backup.sh
そして、それだけです。もちろん、Raspberry Piのホスト名に応じて設定されたものを忘れず、別のものを使用する場合はユーザーを変更してください。
WindowsからRasperryPiへのバックアップを作成する
Windowsでは、これらの優れた* nixツールがすべて欠落しているため、少し難しくなります。特にsshとrsync。ただし、ここでの簡単な解決策は、それに応じたパッケージでcygwinをインストールすることです。
22。 Cygwinをダウンロード
まず、cygwinをダウンロードしてインストールする必要があります。こちらからダウンロードしてください。ほとんどの場合、64ビットバージョンを使用する必要があります。
23。必要なパッケージを使用してCygwinをインストールする
Cygwinインストーラーのダウンロードが完了したら、それを実行します。次に、いくつかの入力を求めるプロンプトが表示されます。以下のリストに従って入力してください:
ダウンロードソースを選択->インターネットからインストール
ルートインストールディレクトリを選択->C:\ cygwin
ローカルパッケージディレクトリ->C:\ Users \<ユーザー>\ダウンロード(デフォルトのまま)
インターネット接続を選択->直接接続
ダウンロードサイトを選択->お近くのダウンロードサイトを選択
その後、[パッケージの選択]ダイアログが表示されます。ここでは、rsyncとopensshを選択することが重要です。検索ボックスでリストをフィルタリングするのが最善です。 rsyncと入力するだけで、Netフォルダーに表示されます。それをクリックしてからビン?列を今すぐチェックする必要があります。 opensshに対してこれを繰り返します。
その後、すべてのパッケージのダウンロードとインストールを開始します。多くの*nixツールをダウンロードするので、少し時間がかかります。
24。 publichsshキーを作成する
rsyncとopensshを含むcygwinをインストールすると、スタートメニューに新しい「Cygwin」エントリが表示されます。そのエントリ内に、Cygwinターミナルへのリンクがあります。これを実行すると、ターミナルが開きます。ターミナルで、次のコマンドを発行して公開sshキーを作成します。
ssh-keygen -t rsa -b 4096 -C "[email protected]"
もちろん、メールに置き換えるか、必要に応じて何でも入力してください。
25。公開sshキーをRasperryPiバックアップユーザーにコピーします
次に、公開鍵をRaspberryPiバックアップユーザーアカウントにコピーする必要があります。
ssh-copy-id ~/.ssh/id_rsa.pub [email protected]
buとrpi2buを実際のバックアップユーザーとホスト名に置き換えます。何らかの理由でRaspberryPiをホスト名で検出できない場合は、そのIPアドレスを使用してください。
26。デスクトップでバックアップスクリプトを作成する
次に、テキストエディタを開いて、次のように入力します。
REM Just a little script for making backups REM Check if it's a new month c:\cygwin\bin\ssh.exe [email protected] '/home/bu/backups.sh newMonth' REM Make backup with rsync c:\cygwin\bin\rsync -avzpH --partial --delete -e "c:\cygwin\bin\ssh.exe" /cygdrive/c/Users [email protected]:/home/bu/current/ REM Make hardlink copy and clean up space if necessary c:\cygwin\bin\ssh.exe [email protected] '/home/bu/backups.sh hardLink'
このファイルをbackup.batとして保存します
デスクトップ(またはその他の場所)。
Windowsで実行できるように、ファイル拡張子が.batであることが重要です。
Cygwinを他のフォルダーにインストールした場合は、それに応じたパスを指定します(デフォルトでは、64ビットインストールにはc:\ cygwin64を使用します)。また、別のものを使用した場合は、RaspberryPiのホスト名とバックアップユーザーを変更します。
デスクトップのbackup.batファイルをクリックすると、ターミナルが開き、バックアップが作成されます。 Windowsコマンド(cmd.exe)から実行して、完了時に自動的に閉じないようにすることもできます。
バックアップを作成するだけで、取引の半分になります。 (a)バックアップが作成され、(b)必要に応じてそれらを使用してバックアップを復元できることを確認する必要があります。
これを簡単にするために、sambaearilierをセットアップします。ネットワーク環境を確認する場合に正しく構成されている場合は、近隣にrpi2buという名前のコンピューター/サーバーが必要です。 Windowsでは、エクスプローラーを開き、ネットワークに移動して、表示されるまで2〜3秒待ちます。 Linuxの場合、例: Dolphinでは、場所のサイドバーにあるネットワークアイコンをクリックするだけです。次に、資格情報なしでそのコンピューター/サーバーを入力すると、バックアップという名前の共有が表示されます。その共有を入力すると、現在と古い2つのフォルダーと、backups.shとcheckMonth.txtの2つのファイルが表示されます。ファイルをコンピュータにコピーして戻すことはできますが、sambaは読み取り専用として設定されているため、ファイルを削除することはできません。
したがって、いくつかのファイルをコンピューターにコピーして戻し、それらが正常に実行されることを確認します。含まれている場合は、バックアップが正常に作成されています。