NAS からネットワーク上のコンピュータの外付け HDD へ rsync

(2025-09-13)

NAS を一箇所にまとめたために大きな災害で破損する不安を感じてきました。 その不安はこれまでもあり、定期的に外付け HDD を繋いでバックアップをとってきましたが、もう少し簡単にしたいと思います。

外付け HDD の予約ブロック

linux mint 22 で外付け HDD をフォーマットすると、全体の約 5 % が予約ブロックとして確保されます。

この HDD は 2 TB なので 100 GB が確保されています。

この予約は、rootユーザーがシステム復旧などで使えるようにする安全機能ですが、外付け HDD やデータ保存用ディスクならほとんど不要なので減らすことができます。

まずは確認します。

lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,LABEL
NAME SIZE FSTYPE MOUNTPOINT LABEL
sda 465.8G
└─sda1 465.8G ext4 /
sdb 0B
sdc 1.8T
└─sdc1 1.8T ext4 /media/user/USB MEMORI USB MEMORI
sr0 1024M
nvme0n1 238.5G
├─nvme0n1p1 499M ntfs 回復
├─nvme0n1p2 100M vfat /boot/efi
├─nvme0n1p3 16M
├─nvme0n1p4 237.3G ntfs
└─nvme0n1p5 594M ntfs

sdc1 が外付け HDD のようです。

アンマウントします。

sudo umount /dev/sdc1

予約を最小に。

sudo tune2fs -m 0 /dev/sdc1

外付け HDD を再マウントすると、

100 GB は大きいと思います。

rsync

NAS から外付け HDD に rsync します。

外付け HDD の名前を変更します。この名前は変更しなくてもいいのですが、「USB MEMORI」などと間にスペースが入っているといろいろと面倒なこともあるので。

sudo e2label /dev/sdc1 "extHDD_2TB"

反映するためには一度アンマウントする必要があります。

NAS との間にパスフレーズを要求されない環境になっていれば rsync はとても簡単です。

#!/bin/sh
# NAS720
rsync -avz -e "ssh -p 12345" \
--rsync-path="/bin/rsync" \
--exclude 'data/movies/' \
heno@192.168.0.20:/volume1/web/jstree/ \
"/media/mituo/extHDD_2TB/NAS720/web/"
# NAS718
rsync -avz -e "ssh -p 12345" \
--rsync-path="/bin/rsync" \
heno@192.168.0.18:/volume1/web/ \
"/media/mituo/extHDD_2TB/NAS718/web/"

—exclude ‘data/movies/’ \

で、moviesを除外して rsync します。

このシェルスクリプトに実行権限を与えて、外付け HDD を接続してから実行すると rsync なので差分だけをコピーするはずです。

実行したところ、

アルバムや音楽やビデオは xserver に rsync したのでそれ以外をバックアップすることにしたところ、2 TB の外付け HDD に十分収まってまだ余裕があります。

普段はオフラインにしておき、1 週間に 1 回程度 rsync をすればいいと考えています。