バックアップサーバー · 4 min read · Dec 14, 2025

Raspberry PiをLinuxおよびWindowsデスクトップのバックアップサーバーとして設定する方法

Raspberry Piは、小型のシングルボードコンピュータのシリーズです。比較的安価で、バックアップサーバーやVoIPサーバーを実行するのに適しています。2015年2月にRaspberry Pi 2が発売されました。これには、より多くのRAM、新しいCPU、および4つのオンボードUSBポートが搭載されています。

現在のRaspberry Pi 2の価格は35ドルです。ただし、他にもいくつかのものが必要です:

  • microSDカード:Raspberry Pi 2は、起動するためにmicroSDカードを必要とします。4GB以上のものであれば、どれでも大丈夫です。バックアップサーバーには4GBで十分です。速く読み取れるものを選ぶと良いでしょう。
  • Micro USB電源チャージャー:これにも電源供給が必要です。micro USBポートから電源が供給されるため、古い携帯電話から不要になった充電器が家にある可能性が高いです。
  • 外部USBストレージ:このハウツーはバックアップサーバーの設定に関するものなので、外部USBストレージも必要です。外部512GBハードディスクで十分かもしれませんし、4TBドライブが必要かもしれません。それはすべてあなたのストレージニーズ次第です。
  • ケース:最後にケースが必要です。ケースは厳密には必要ありませんが、使用しない場合はメインボード全体がどこかに置かれることになり、損傷を受けやすくなります。

したがって、合計コストはRaspberry Piが35ドル、microSDカードが約10ドル、ケースが約10ドル、micro USBチャージャーはおそらく持っているので無料、そして外部USBドライブのコストがかかります。

また、バックアップを取得するためにsambaを設定し、共有は認証なしの読み取り専用モードです。このガイドに従って適切に設定すれば、LAN内でのみ利用可能で、LAN外からの接続試行は拒否されます。sambaユーザーや異なる認証の設定は、このハウツーの範囲を超えます。それについて説明している他のハウツーがたくさんあり、必要に応じて簡単に組み込むことができます。

Raspberry Piをバックアップサーバーとして設定する

Raspberry Piをバックアップサーバーとして設定することは、最初にイメージをフラッシュし、その後すべてを準備する必要があるため、最も難しい部分です。しかし、ステップバイステップのガイドがあなたを導くはずです。

1. Raspianイメージをダウンロード

まず、ここから最新のRaspianイメージをダウンロードします https://www.raspberrypi.org/downloads/

2. イメージをmicroSDカードにフラッシュ

イメージをダウンロードしたら、それをmicroSDカードにフラッシュする必要があります。これを行うための優れたガイドがすでにあるため、ここで繰り返す意味はありません。ここにあるガイドに従うのが最良です。

3. 初回起動/設定

RaspianイメージでRaspberry Piをフラッシュした後、HDMIスクリーンを接続して起動します。初回起動時に、設定画面が表示されます。その設定画面は非常にシンプルで、設定すべきいくつかの項目があります。

免責事項:写真は携帯電話で撮影されたため、あまり良くありません。

4. ファイルシステムを拡張

まず、SDカードの全スペースを利用可能にしたいと思います。バックアップは外部ドライブに保存されるため、実際にはそれほど重要ではありませんが、スペースが利用可能であることが好きです。したがって、1のファイルシステムを拡張を選択し、次回の再起動時にファイルシステムが拡張されるという通知が表示されます。

5. ユーザーパスワードを変更

次に、ユーザー「pi」のデフォルトパスワードを変更したいと思います。したがって、2のユーザーパスワードを変更を選択し、希望するパスワードを2回入力し、各回の後にEnterを押します。再度、パスワードが変更されたという通知が表示されます。

6. コンソールログイン

その後、GUIを起動しないように確認したいと思います。したがって、3のデスクトップ/Scratchへのブートを有効にするを選択します。次の画面で、コンソールテキストコンソールを選択し、ログインを要求します(デフォルト)。

7. ローカリゼーション

次に、システム言語や他の利用可能な言語、キーボードレイアウトなどを設定したいと思います。そのためには、4の国際化オプションに入ります。それに入ると、言語、タイムゾーン、キーボード言語を変更するための画面が表示されます。ダイアログはすべて簡単なので、これ以上の詳細には触れません。

注意:これらのオプションのいずれかを選択すると、再びメイン設定画面に戻ります。

8. 高度なオプション

次に、8の高度なオプションに入ります。そこには設定できる他のいくつかの項目があります。重要な3つはA2ホスト名、A3メモリ分割、A4 SSHです。

9. ホスト名を設定

ホスト名を設定すると、LAN上でホスト名を使用してRaspberry Piにアクセスできるようになります。注意:文字と数字のみを使用できます。この例では、ホスト名をrpi2bu(Raspberry Pi 2 Backupの略)として使用していますが、これはあなた次第です。

10. メモリ分割

このRaspberry Piをバックアップサーバーとして実行するため、GPUに貴重なRAMを浪費したくありません。覚えておいてください:これはヘッドレスサーバーです。したがって、RAM分割を16MBに設定します。

11. OpenSSHサーバーを有効にする

rsyncを使用してssh経由でバックアップを行い、sshアクセスはRaspberry Piのリモート管理に良いため、高度なオプションメニューでOpenSSHサーバーも有効にします。

11. 完了して再起動

これで、設定画面から設定すべきすべての項目が完了し、メイン設定から選択できるようになります。それを選択すると、Raspberry Piが再起動し、しばらくするとログイン資格情報を求められます。現在のユーザーはpiで、パスワードはステップ5で設定したものです。また、Raspberry Piの現在のIPアドレスも表示されます。

12. 更新と必要なパッケージのインストール

Raspberry Piをバックアップサーバーとして使用するには、2つの追加パッケージ、rsyncとsambaをインストールする必要があります。rsyncは、Windows/Linuxコンピュータからファイルを同期するツールで、sambaはネットワーク上でバックアップを利用可能にします(読み取り専用モードで)。

常に多くの変更や更新があるため、最初に次のコマンドを実行します:

sudo apt-get update && sudo apt-get upgrade

その後、次のコマンドで必要なパッケージをインストールします:

sudo apt-get install rsync samba

注意:デフォルトユーザーpiは、sudoコマンドを使用してrootとしてシステムコマンドを実行できます。sudoコマンドを使用すると、再度ログインパスワードを求められます。このパスワードはしばらくキャッシュされるため、2つのsudoコマンドを連続して実行しても、パスワード入力を1回だけ求められます。

13. リモートSSH接続またはRaspberry Piで続行

次のステップは、Raspberry Pi自体または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ドライブで、ドライブはユーザーのホームディレクトリにマウントされます。Raspberry Piには4つのUSBデバイスを直接接続できるため、必要に応じて別のユーザーに拡張するのも簡単です。マウントする前に、バックアップユーザーを追加します。このハウツーでは、そのユーザーをbuと呼びます。そのユーザーを作成するには、次のコマンドを実行します:

sudo adduser bu

再度、ユーザーのパスワードを2回入力するように求められます。

ユーザーが追加されたら、次のコマンドで外部ドライブを簡単にマウントできます:

sudo mount /dev/sda1 /home/bu

ただし、使用する前に、最後のステップを実行する必要があります。マウントされたフォルダーの所有権を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を使用していることが表示されます。新しいドライブでは、0であるはずです。

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の代わりに自分のUUIDを使用してください。

これで、再起動後も外部USBドライブが/home/buにマウントされることが保証されました。複数のUSBデバイスを接続すると、すべてが正しく追加されないことに気付いた場合は、rootdelayを10以上に延長してください。

17. Sambaの設定

次に、sambaを設定して、すべてのバックアップをネットワーク上で利用可能にします。Sambaは、Windowsがsmbプロトコルを使用してアクセスできるネットワーク共有を提供するデーモンです。

単に/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アドレスを拒否し、localhostとLANのみを許可するように設定しました。私のLANには10.0.0.xを使用しています。おそらく192.168.0.0を使用しているので、それに応じて変更してください。

また、グローバルセクションでは、ゲストアカウントがbuユーザーであり、実際の共有ではゲストがアクセスでき、読み取り専用アクセスであることがわかります。

ファイルを保存して終了し、sambaを再起動します:

sudo /etc/init.d/samba restart

これで、サービスの設定が完了しました。

18. Raspberry Pi上のバックアップ制御ファイル

/home/bu/backups.shを作成して編集し、次の内容を記入します:

#!/usr/bin/env bash

basePath="/home/bu"

action="${1}"

function checkMonth ()
{
        now=$(date +"%Y-%m")
        last=$( "checkMonth.txt"
        fi
}


function makeHardlink ()
{
        # ハードリンクコピーを作成
        now=$(date +"%Y-%m-%d_%H-%M")
        mkdir -p "${basePath}/old/${now}"
        cp -al "${basePath}/current*" "${basePath}/old/${now}"
}


function checkFree ()
{
        # 古いファイルを削除する必要があるか確認
        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 "十分なスペースがありません... 古いバックアップを削除しています..."
                IFS= read -r -d $'\0' line < <(find "${basePath}/old" -type d -maxdepth 1 -printf '%T@ %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関数は、最後のバックアップから新しい月があるかどうかを確認します。ご存知のように、ハードディスクは破損する可能性があり、特にその一部が故障することがあります。その場合、破損したセクター内のデータファイルにアクセスできなくなります。ただし、毎回完全なバックアップを作成するには多くのディスクスペースが必要です。ディスクスペースを節約するために、バックアップをハードリンクします。つまり、同じデータを指すファイルシステムの「インデックス」ファイルを新たに書き込むだけです。したがって、データセクターが破損すると、すべてのハードリンクされたファイルは同じデータを指しているため、ファイルを取得できなくなります。このリスクを最小限に抑えるために、毎月完全な新しいバックアップセットが書き込まれることを確認します。これにより、ストレージスペースが消費されます。たとえば、400GBのデータがある場合、月1には400GB + 変更されたファイルが使用されます。月2にはさらに400GB + 変更されたファイルが使用されます。

これにより、最初の同期と新しい月の最初の同期には時間がかかります。他のすべては迅速です。

makeHardlink関数は、実際に最後のバックアップのハードリンクコピーを作成します。ハードリンクコピーはほとんどスペースを必要とせず、バックアップでは新しいファイルのみが新たに書き込まれます。また、ハードリンクコピーと組み合わせてcheckFree関数を実行します。

checkFree関数は、/home/buの空きスペースを確認します。また、最後のバックアップによって使用されたサイズも確認します。空きスペースが最後のバックアップの2倍未満である場合、古いバックアップを削除し始め、再び2倍の空きスペースを確保します。400GBのデータをバックアップしたい場合、次の日/次のバックアップ時に800GBを超えることは考えにくいと思います。

これにより、このバックアップメカニズムを「永遠に」使用できることを意味します。空きスペースが小さくなりすぎると、古いバックアップが自動的に削除されます。

そのスクリプトを保存した後、実行可能にし、buユーザーに所有権を変更します:

sudo chmod 0755 /home/bu/backups.sh  
sudo chown bu:bu /home/bu/backups.sh

これで、Raspberry Pi側の設定は完了です。

LinuxからRaspberry Piへのバックアップを作成する

Raspberry Piにバックアップを作成するには、現在のユーザー(または必要に応じてroot)をRaspberry Piのバックアップユーザーアカウントに追加するだけです。

sshクライアントがすでにインストールされていること、使用できる公開鍵があることを前提としています。最終的には、最初にrsyncをインストールする必要があります。

19. 公開ssh鍵を作成

これまでに公開鍵がない場合は、次のコマンドで作成します:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

もちろん、あなたのメールアドレスに置き換えるか、何かを入力してください。

20. 公開ssh鍵をRaspberry Piのバックアップユーザーにコピー

次に、公開鍵をRaspberry Piのバックアップユーザーアカウントにコピーする必要があります:

ssh-copy-id ~/.ssh/id_rsa.pub bu@rpi2bu

buとrpi2buを実際のバックアップユーザーとホスト名に置き換えてください。何らかの理由でRaspberry Piがホスト名で検出できない場合は、IPアドレスを使用してください。

21. デスクトップにバックアップスクリプトを作成

Raspberry Piにパスワードを提供する必要なくログインできるようになったので、バックアップを行う小さなbashスクリプトが必要です。デスクトップにbackup.shを作成します。

~/Desktop/backup.shを編集し、次の内容を追加します:

#!/usr/bin/env bash

# 新しい月を確認
ssh bu@rpi2bu '/home/bu/backups.sh newMonth'
# rsyncバックアップを実行
rsync -avzpH  --partial --delete ~/ bu@rpi2bu:/home/bu/current/
# バックアップを作成し、空きスペースを確認
ssh bu@rpi2bu '/home/bu/backups.sh hardLink'

次に、実行可能にします:

chmod 0755 ~/Desktop/backup.sh

これで完了です。もちろん、Raspberry Piのホスト名を設定し、異なるユーザーを使用している場合は変更することを忘れないでください。

WindowsからRaspberry Piへのバックアップを作成

Windowsでは、すべての素晴らしい*nixツールが欠けているため、少し難しくなります。特にsshとrsyncです。しかし、ここでの簡単な解決策は、必要なパッケージを含むcygwinをインストールすることです。

22. Cygwinをダウンロード

まず、cygwinをダウンロードしてインストールする必要があります。ここからダウンロードします。おそらく64ビット版を使用したいでしょう。

23. 必要なパッケージでCygwinをインストール

Cygwinインストーラーのダウンロードが完了したら、それを実行します。いくつかの入力を求められますので、以下のリストに従って入力してください:

Aダウンロードソースを選択 -> インターネットからインストール
ルートインストールディレクトリを選択 -> C:\cygwin
ローカルパッケージディレクトリ -> C:\Users\Downloads(デフォルトのままにします)
インターネット接続を選択 -> 直接接続
ダウンロードサイトを選択 -> あなたに近いダウンロードサイトを選択

その後、パッケージの選択ダイアログが表示されます。ここでは、rsyncとopensshを選択することが重要です。リストを検索ボックスでフィルタリングするのが最良です。rsyncと入力すると、Netフォルダに見つかります。それをクリックすると、Bin?列がチェックされるはずです。opensshについても同様に繰り返します。

その後、すべてのパッケージのダウンロードが開始され、インストールされます。多くの*nixツールがダウンロードされるため、少し時間がかかります。

24. 公開ssh鍵を作成

rsyncとopensshを含むcygwinをインストールした後、スタートメニューに新しい「Cygwin」エントリが表示されます。そのエントリ内にCygwinターミナルへのリンクがあります。それを実行すると、ターミナルが開きます。ターミナルで、次のコマンドを実行して公開ssh鍵を作成します:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

もちろん、あなたのメールアドレスに置き換えるか、何かを入力してください。

25. 公開ssh鍵をRaspberry Piのバックアップユーザーにコピー

次に、公開鍵をRaspberry Piのバックアップユーザーアカウントにコピーする必要があります:

ssh-copy-id ~/.ssh/id_rsa.pub bu@rpi2bu

buとrpi2buを実際のバックアップユーザーとホスト名に置き換えてください。何らかの理由でRaspberry Piがホスト名で検出できない場合は、IPアドレスを使用してください。

26. デスクトップにバックアップスクリプトを作成

次に、テキストエディタを開き、次の内容を入力します:

REM バックアップを作成するための小さなスクリプト

REM 新しい月かどうかを確認
c:\cygwin\bin\ssh.exe bu@rpi2bu '/home/bu/backups.sh newMonth'
REM rsyncでバックアップを作成
c:\cygwin\bin\rsync -avzpH  --partial --delete -e "c:\cygwin\bin\ssh.exe" /cygdrive/c/Users bu@rpi2bu:/home/bu/current/
REM ハードリンクコピーを作成し、必要に応じてスペースをクリーンアップ
c:\cygwin\bin\ssh.exe bu@rpi2bu '/home/bu/backups.sh hardLink'

このファイルをデスクトップにbackup.batとして保存します(または他の場所に)。

ファイル拡張子が.batであることが重要です。そうすれば、Windowsがそれを実行します。

Cygwinを他のフォルダーにインストールした場合は、適切なパスを指定してください(デフォルトでは64ビットインストールの場合、c:\cygwin64を使用します)。また、Raspberry Piのホスト名とバックアップユーザーを変更してください。

デスクトップのbackup.batファイルをクリックすると、ターミナルが開き、バックアップが作成されます。また、Windowsコマンド(cmd.exe)から実行することもでき、完了時に自動的に閉じないようにできます。

バックアップを確認する

バックアップを作成するだけでは不十分です。バックアップが作成されたこと(a)と、必要に応じてそれらを使用して復元できること(b)を確認する必要があります。

これを簡単にするために、以前にsambaを設定しました。正しく構成されていれば、ネットワーク環境を確認すると、近隣にrpi2buという名前のコンピュータ/サーバーが表示されるはずです。Windowsでは、エクスプローラーを開き、ネットワークに移動し、2〜3秒待つと表示されます。Linuxでは、たとえばDolphinで、場所のサイドバーのネットワークアイコンをクリックします。そのコンピュータ/サーバーに資格情報なしで入ることができ、Backupという名前の共有が表示されます。その共有に入ると、currentとoldという2つのフォルダーと、backups.shとcheckMonth.txtという2つのファイルが表示されます。ファイルをコンピュータにコピーできますが、sambaが読み取り専用として設定されているため、ファイルを削除することはできません。

したがって、いくつかのファイルをコンピュータにコピーし、それらが正常に動作することを確認してください。正常に動作すれば、バックアップが成功したことになります。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。