technicalsuwako.moe/src/blog/freebsd-nas-auto-backup.md

3.8 KiB
Raw Blame 履歴

title: 【FreeBSD】簡単にNASの自動的にバックアップする方法 author: 凜 date: 2024-01-30 tags: jp,blog,freebsd,nas,デジタル自主

先月は「076動画ホスティングの解決策」という投稿を書きました。
先週の週末、このNASに4 TiBのSSDを追加しましたので、それによりGitlerと動画のストレージ容量が増大出来ました。
でも、バックアップならどうすれば良いですか?
今回はこれを解決すると思いますが、ちゃんと理解するには、まずは「076動画ホスティングの解決策」をご覧下さい。

必要なソフト

今回必要なソフトは1つだけで、rsyncです。

# doas pkg install rsync

rootになれ

そこからrootアカウントで行います。

# doas su -l
$

ZFSで使ってディスクを確認して

$ zpool list               
NAME     SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
backup   888G   259G   629G        -         -     0%    29%  1.00x    ONLINE  -
xroot   3.62T   259G  3.37T        -         -     0%     6%  1.00x    ONLINE  -
zroot    920G   277G   643G        -         -     0%    30%  1.00x    ONLINE  -

$ ls -thal /zroot /backup /xroot
/xroot:
total 52
drwxr-xr-x  19 peertube peertube   19B  1月 29 23:34 peertube
drwxr-xr-x   7 root     wheel       7B  1月 28 23:30 .
drwxr-xr-x  22 root     wheel      28B  1月 28 20:32 ..
drwxr-xr-x  17 suwako   suwako     17B  1月 23 16:14 repo
drwxr-xr-x   6 git      git         8B  1月 18 16:14 git
drwxr-x---   8 git      git         8B  1月 18 15:59 gitler

/backup:
total 43
drwxr-xr-x  19 peertube peertube   19B  1月 29 23:34 peertube
drwxr-xr-x  22 root     wheel      28B  1月 28 20:32 ..
drwxr-xr-x  17 suwako   suwako     17B  1月 23 16:14 repo
drwxr-xr-x   6 root     wheel       6B  1月 23 14:26 .
drwxr-xr-x   6 git      git         8B  1月 18 16:14 git
drwxr-x---   8 git      git         8B  1月 18 15:59 gitler

/zroot:
total 43
drwxr-xr-x  19 peertube peertube   19B  1月 29 23:34 peertube
drwxr-xr-x  22 root     wheel      28B  1月 28 20:32 ..
drwxr-xr-x  17 suwako   suwako     17B  1月 23 16:14 repo
drwxr-xr-x   6 root     wheel       6B  1月 23 14:26 .
drwxr-xr-x   6 git      git         8B  1月 18 16:14 git
drwxr-x---   8 git      git         8B  1月 18 15:59 gitler

$ du -lsh /zroot/* /backup/* /xroot/*
6.2G  /zroot/git
142G  /zroot/gitler
104G  /zroot/peertube
6.9G  /zroot/repo
6.2G  /backup/git
142G  /backup/gitler
104G  /backup/peertube
6.9G  /backup/repo
6.2G  /xroot/git
142G  /xroot/gitler
512B  /xroot/mainpc
104G  /xroot/peertube
6.9G  /xroot/repo

シェルスクリプトを作る

$ nvim sync-backups.sh && chmod +x sync-backups.sh

この「 && chmod +x sync-backups.sh」の部分は、「sync-backups.sh」を保存して終了したら、直ぐに実行可能にして下さいという意味です。

#!/bin/sh

# 1 TiB
rsync -vaHzop --delete /zroot/* /backup

# 4 TiB
rsync -vaHzop --delete /zroot/* /xroot

「rsync -vaHzop --delete /zroot/* /backup」の意味は

  • rsync = ソフト
  • -vaHzop = 何をコピーするか表示する、アーカイブモード (1:1のコピーを作る事)、ハードリンクを保管、、オーナーを保管、許可を保管
  • --delete = もう存在しないファイルやディレクトリがあれば、消す
  • /zroot/* /backup = /zrootの内容の全部を/backupにコピーする

crontabを変更して

最後にcrontabを変更しましょう。

$ crontab -e
0 0,6,12,18 * * * /root/sync-backups.sh

それで、毎日4回 (0:00、6:00、12:00、そうして18:00で) バックアップのスクリプトを実行されます。

以上