【FreeBSD】簡単にNASの自動的にバックアップする方法

このコミットが含まれているのは:
守矢諏訪子 2024-01-30 12:48:27 +09:00
コミット b176860124
6個のファイルの変更351行の追加289行の削除

ファイルの表示

@ -3,13 +3,122 @@
<id>gemini://technicalsuwako.moe</id>
<title>テクニカル諏訪子</title>
<updated>2024-01-04T00:00:00Z</updated>
<updated>2024-01-30T00:00:00Z</updated>
<author><name>テクニカル諏訪子</name></author>
<link href="gemini://technicalsuwako.moe" rel="alternate"></link>
<entry>
<id>blog/freebsd-nas-auto-backup.gmi</id>
<author><name>凜</name></author>
<title type="html">【FreeBSD】簡単にNASの自動的にバックアップする方法</title>
<published>2024-01-30T00:00:00Z</published>
<category term="jp"></category>
<category term="blog"></category>
<category term="freebsd"></category>
<category term="nas"></category>
<category term="デジタル自主"></category>
<link href="gemini://technicalsuwako.moe/blog/freebsd-nas-auto-backup.gmi" rel="alternate"></link>
<content type="html">
&lt;p&gt;&lt;a href=&#34;/blog/digital-autonomy-076video-hosting.gmi&#34;&gt;先月は「076動画ホスティングの解決策」という投稿を書きました。&lt;/a&gt;&lt;br /&gt;
先週の週末、このNASに4 TiBのSSDを追加しましたので、それによりGitlerと動画のストレージ容量が増大出来ました。&lt;br /&gt;
でも、バックアップならどうすれば良いですか?&lt;br /&gt;
今回はこれを解決すると思いますが、ちゃんと理解するには、まずは「076動画ホスティングの解決策」をご覧下さい。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;必要なソフト&lt;/h2&gt;
&lt;p&gt;今回必要なソフトは1つだけで、rsyncです。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;# doas pkg install rsync&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;root&#34;&gt;rootになれ&lt;/h2&gt;
&lt;p&gt;そこからrootアカウントで行います。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;# doas su -l&lt;/span&gt;
$
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;zfs&#34;&gt;ZFSで使ってディスクを確認して&lt;/h2&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;$ 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 &lt;span style=&#34;color:#666&#34;&gt;52&lt;/span&gt;
drwxr-xr-x &lt;span style=&#34;color:#666&#34;&gt;19&lt;/span&gt; peertube peertube 19B 1月 &lt;span style=&#34;color:#666&#34;&gt;29&lt;/span&gt; 23:34 peertube
drwxr-xr-x &lt;span style=&#34;color:#666&#34;&gt;7&lt;/span&gt; root wheel 7B 1月 &lt;span style=&#34;color:#666&#34;&gt;28&lt;/span&gt; 23:30 .
drwxr-xr-x &lt;span style=&#34;color:#666&#34;&gt;22&lt;/span&gt; root wheel 28B 1月 &lt;span style=&#34;color:#666&#34;&gt;28&lt;/span&gt; 20:32 ..
drwxr-xr-x &lt;span style=&#34;color:#666&#34;&gt;17&lt;/span&gt; suwako suwako 17B 1月 &lt;span style=&#34;color:#666&#34;&gt;23&lt;/span&gt; 16:14 repo
drwxr-xr-x &lt;span style=&#34;color:#666&#34;&gt;6&lt;/span&gt; git git 8B 1月 &lt;span style=&#34;color:#666&#34;&gt;18&lt;/span&gt; 16:14 git
drwxr-x--- &lt;span style=&#34;color:#666&#34;&gt;8&lt;/span&gt; git git 8B 1月 &lt;span style=&#34;color:#666&#34;&gt;18&lt;/span&gt; 15:59 gitler
/backup:
total &lt;span style=&#34;color:#666&#34;&gt;43&lt;/span&gt;
drwxr-xr-x &lt;span style=&#34;color:#666&#34;&gt;19&lt;/span&gt; peertube peertube 19B 1月 &lt;span style=&#34;color:#666&#34;&gt;29&lt;/span&gt; 23:34 peertube
drwxr-xr-x &lt;span style=&#34;color:#666&#34;&gt;22&lt;/span&gt; root wheel 28B 1月 &lt;span style=&#34;color:#666&#34;&gt;28&lt;/span&gt; 20:32 ..
drwxr-xr-x &lt;span style=&#34;color:#666&#34;&gt;17&lt;/span&gt; suwako suwako 17B 1月 &lt;span style=&#34;color:#666&#34;&gt;23&lt;/span&gt; 16:14 repo
drwxr-xr-x &lt;span style=&#34;color:#666&#34;&gt;6&lt;/span&gt; root wheel 6B 1月 &lt;span style=&#34;color:#666&#34;&gt;23&lt;/span&gt; 14:26 .
drwxr-xr-x &lt;span style=&#34;color:#666&#34;&gt;6&lt;/span&gt; git git 8B 1月 &lt;span style=&#34;color:#666&#34;&gt;18&lt;/span&gt; 16:14 git
drwxr-x--- &lt;span style=&#34;color:#666&#34;&gt;8&lt;/span&gt; git git 8B 1月 &lt;span style=&#34;color:#666&#34;&gt;18&lt;/span&gt; 15:59 gitler
/zroot:
total &lt;span style=&#34;color:#666&#34;&gt;43&lt;/span&gt;
drwxr-xr-x &lt;span style=&#34;color:#666&#34;&gt;19&lt;/span&gt; peertube peertube 19B 1月 &lt;span style=&#34;color:#666&#34;&gt;29&lt;/span&gt; 23:34 peertube
drwxr-xr-x &lt;span style=&#34;color:#666&#34;&gt;22&lt;/span&gt; root wheel 28B 1月 &lt;span style=&#34;color:#666&#34;&gt;28&lt;/span&gt; 20:32 ..
drwxr-xr-x &lt;span style=&#34;color:#666&#34;&gt;17&lt;/span&gt; suwako suwako 17B 1月 &lt;span style=&#34;color:#666&#34;&gt;23&lt;/span&gt; 16:14 repo
drwxr-xr-x &lt;span style=&#34;color:#666&#34;&gt;6&lt;/span&gt; root wheel 6B 1月 &lt;span style=&#34;color:#666&#34;&gt;23&lt;/span&gt; 14:26 .
drwxr-xr-x &lt;span style=&#34;color:#666&#34;&gt;6&lt;/span&gt; git git 8B 1月 &lt;span style=&#34;color:#666&#34;&gt;18&lt;/span&gt; 16:14 git
drwxr-x--- &lt;span style=&#34;color:#666&#34;&gt;8&lt;/span&gt; git git 8B 1月 &lt;span style=&#34;color:#666&#34;&gt;18&lt;/span&gt; 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
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;heading-1&#34;&gt;シェルスクリプトを作る&lt;/h2&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;$ nvim sync-backups.sh &lt;span style=&#34;color:#666&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; chmod +x sync-backups.sh
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;この「 &amp;amp;&amp;amp; chmod +x sync-backups.sh」の部分は、「sync-backups.sh」を保存して終了したら、直ぐに実行可能にして下さいという意味です。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#080&#34;&gt;#!/bin/sh
&lt;/span&gt;&lt;span style=&#34;color:#080&#34;&gt;&lt;/span&gt;
&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;# 1 TiB&lt;/span&gt;
rsync -vaHzop --delete /zroot/* /backup
&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;# 4 TiB&lt;/span&gt;
rsync -vaHzop --delete /zroot/* /xroot
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;「rsync -vaHzop &amp;ndash;delete /zroot/* /backup」の意味は&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;rsync = ソフト&lt;/li&gt;
&lt;li&gt;-vaHzop = 何をコピーするか表示する、アーカイブモード (1:1のコピーを作る事)、ハードリンクを保管、、オーナーを保管、許可を保管&lt;/li&gt;
&lt;li&gt;&amp;ndash;delete = もう存在しないファイルやディレクトリがあれば、消す&lt;/li&gt;
&lt;li&gt;/zroot/* /backup = /zrootの内容の全部を/backupにコピーする&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;crontab&#34;&gt;crontabを変更して&lt;/h2&gt;
&lt;p&gt;最後にcrontabを変更しましょう。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;$ crontab -e
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;0 0,6,12,18 * * * /root/sync-backups.sh
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;それで、毎日4回 (0:00、6:00、12:00、そうして18:00で) バックアップのスクリプトを実行されます。&lt;/p&gt;
&lt;p&gt;以上&lt;/p&gt;
</content>
</entry>
<entry>
<id>blog/rice-productive.gmi</id>
<author><name>凛</name></author>
@ -284,292 +393,5 @@ Linux向けウィルスも存在しますが、その数は格段に少ないで
</content>
</entry>
<entry>
<id>blog/digital-autonomy-076video-hosting.gmi</id>
<author><name>凛</name></author>
<title type="html">【デジタル自主】076動画ホスティングの解決策</title>
<published>2023-12-11T00:00:00Z</published>
<category term="jp"></category>
<category term="blog"></category>
<category term="デジタル自主"></category>
<category term="freebsd"></category>
<category term="openbsd"></category>
<category term="bsd"></category>
<category term="nfs"></category>
<category term="relayd"></category>
<category term="nas"></category>
<category term="peertube"></category>
<category term="ネットワーク"></category>
<link href="gemini://technicalsuwako.moe/blog/digital-autonomy-076video-hosting.gmi" rel="alternate"></link>
<content type="html">
&lt;p&gt;PeerTubeのホスティングと言えば、「高額」というイメージが浮かびます。&lt;br /&gt;
しかし、デジタル自主を理解すれば、高額な費用は必要ありません。&lt;br /&gt;
あたしはストレージやトラフィックの使用量に関わらず、毎月1,200円を支払っています。&lt;/p&gt;
&lt;h2 id=&#34;heading&#34;&gt;必要な物&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;古いパソコン3台(秋葉原でのジャンク品を選ぶ事を勧めます)&lt;/li&gt;
&lt;li&gt;枚1 TiBのSSD(勧め &lt;a href=&#34;https://www.amazon.co.jp/gp/product/B0BYZFB8D6&#34;&gt;https://www.amazon.co.jp/gp/product/B0BYZFB8D6&lt;/a&gt; 残念ですが、最近はCRUCIAL MX-500のSSDが凄く高くなりましたので、もう勧めれません)&lt;/li&gt;
&lt;li&gt;枚の大きさがどうでも良いSSD&lt;/li&gt;
&lt;li&gt;ルータ(勧め: &lt;a href=&#34;https://www.amazon.co.jp/gp/product/B08MH4VLR3&#34;&gt;https://www.amazon.co.jp/gp/product/B08MH4VLR3&lt;/a&gt; )&lt;/li&gt;
&lt;li&gt;KVMスイッチ(勧め &lt;a href=&#34;https://www.amazon.co.jp/gp/product/B094N5LWKZ&#34;&gt;https://www.amazon.co.jp/gp/product/B094N5LWKZ&lt;/a&gt; )&lt;/li&gt;
&lt;li&gt;キーボード(勧め: &lt;a href=&#34;https://www.amazon.co.jp/gp/product/B08M3BQ1TS&#34;&gt;https://www.amazon.co.jp/gp/product/B08M3BQ1TS&lt;/a&gt; )&lt;/li&gt;
&lt;li&gt;VGAを対応するモニタ&lt;/li&gt;
&lt;li&gt;インターリンク フレッツ接続ZOOT NEXT(固定IPの為)&lt;/li&gt;
&lt;li&gt;(沢山サーバがあれば)ハブスイッチ(勧め: &lt;a href=&#34;https://www.amazon.co.jp/gp/product/B08YKSR6R8&#34;&gt;https://www.amazon.co.jp/gp/product/B08YKSR6R8&lt;/a&gt; )&lt;/li&gt;
&lt;li&gt;つのUSBメモリ(一つはFreeBSDと、一つはOpenBSD)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;特にKVMスイッチが必要はありませんが、つのモニタとキーボードを持ったら、とても便利です。\&lt;/p&gt;
&lt;p&gt;OpenBSDを使う理由はセキュリティで、FreeBSDを使う理由はパフォーマンスです。&lt;br /&gt;
一緒に完璧なコンビネーションとなります。&lt;/p&gt;
&lt;h2 id=&#34;usb&#34;&gt;USBメモリを準備して、インストールして下さい&lt;/h2&gt;
&lt;p&gt;FreeBSDとOpenBSDのイメージをダウンロードして下さい。&lt;br /&gt;
&lt;a href=&#34;https://download.freebsd.org/releases/amd64/amd64/ISO-IMAGES/14.0/&#34;&gt;FreeBSD 14.0-RELEASE&lt;/a&gt;&lt;br /&gt;
&lt;a href=&#34;https://cdn.openbsd.org/pub/OpenBSD/7.4/amd64/install74.img&#34;&gt;OpenBSD 7.4&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;この記事の目的の為に、USBメモリのフラッシュとFreeBSD及びOpenBSDのインストール方法を既に知っていると仮定します。&lt;/p&gt;
&lt;h2 id=&#34;heading-1&#34;&gt;あたしのセットアップ&lt;/h2&gt;
&lt;p&gt;あたしのセットアップは下記のイメージです。
ネットワーク以内のIPは&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;192.168.0.1 = ルータ&lt;/li&gt;
&lt;li&gt;192.168.0.104 = PeerTubeサーバ&lt;/li&gt;
&lt;li&gt;192.168.0.106 = relaydサーバ&lt;/li&gt;
&lt;li&gt;192.168.0.143 = NAS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://ass.technicalsuwako.moe/DKp6BGXWTYu4JnBZ1biZPw.jpg&#34; alt=&#34;&#34; /&gt;
&lt;img src=&#34;https://ass.technicalsuwako.moe/4CUzz0i5QI2FoYuKotvAAQ.jpg&#34; alt=&#34;&#34; /&gt;
&lt;img src=&#34;https://ass.technicalsuwako.moe/JePPSZafQn25uCJxvFaKGw.jpg&#34; alt=&#34;&#34; /&gt;
&lt;img src=&#34;https://ass.technicalsuwako.moe/5VLgmL3DSTyoItyvOILtRw.jpg&#34; alt=&#34;&#34; /&gt;&lt;/p&gt;
&lt;p&gt;ちなみに、このネットワークのIPセグメントは下記のイメージです&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 = ルータ&lt;/li&gt;
&lt;li&gt;2〜99 = DHCP&lt;/li&gt;
&lt;li&gt;100 = メインパソコン&lt;/li&gt;
&lt;li&gt;101〜120 = サーバ&lt;/li&gt;
&lt;li&gt;121〜130 = ノートパソコン(イーサネット)&lt;/li&gt;
&lt;li&gt;131〜140 = ノートパソコン(WiFi)&lt;/li&gt;
&lt;li&gt;141〜160 = ネットワーク機器(NAS、WiFiアクセスポイント、防犯カメラ等)&lt;/li&gt;
&lt;li&gt;161〜180 = ゲーム機(ニンテンドースイッチ、ニンテンドー3DS等)&lt;/li&gt;
&lt;li&gt;181〜200 = スマホ、タブパソコン等&lt;/li&gt;
&lt;li&gt;201〜254 = 何もない&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;relaydopenbsd&#34;&gt;サーバrelaydサーバ(OpenBSD)&lt;/h2&gt;
&lt;p&gt;このサーバでOpenBSDを使う理由はセキュリティです。&lt;br /&gt;
ネットワーク外からの接続は全部このサーバに通じます。&lt;/p&gt;
&lt;h3 id=&#34;etcacme-clientconf&#34;&gt;/etc/acme-client.conf&lt;/h3&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;#
# $OpenBSD: acme-client.conf,v 1.4 2020/09/17 09:13:06 florian Exp $
#
authority letsencrypt {
api url &amp;#34;https://acme-v02.api.letsencrypt.org/directory&amp;#34;
account key &amp;#34;/etc/acme/letsencrypt-privkey.pem&amp;#34;
}
domain 076.moe {
alternative names {
www.076.moe,
stopsdgs.076.moe,
stopsmaho.076.moe,
mitra.076.moe,
mixi.076.moe,
video.076.moe,
imgproxy.076.moe
}
domain key &amp;#34;/etc/ssl/private/076.moe.key&amp;#34;
domain full chain certificate &amp;#34;/etc/ssl/076.moe.crt&amp;#34;
sign with letsencrypt
}
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;etchttpdconfssl&#34;&gt;/etc/httpd.conf(SSL証明書を受け取る為)&lt;/h3&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;# $OpenBSD: httpd.conf,v 1.22 2020/11/04 10:34:18 denis Exp $
server &amp;#34;default&amp;#34; {
listen on * port 80
root &amp;#34;/htdocs&amp;#34;
location &amp;#34;/.well-known/acme-challenge/*&amp;#34; {
root &amp;#34;/acme&amp;#34;
request strip 2
}
}
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;etcrelaydconf&#34;&gt;/etc/relayd.conf&lt;/h3&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;# $OpenBSD: relayd.conf,v 1.5 2018/05/06 20:56:55 benno Exp $
#
# Macros
#
relayd_addr=&amp;#34;0.0.0.0&amp;#34;
insrv4_addr=&amp;#34;192.168.0.104&amp;#34;
router_addr=&amp;#34;192.168.0.106&amp;#34;
table &amp;lt;video&amp;gt; { $insrv4_addr }
http protocol reverse {
tcp { nodelay, sack }
tls ciphers &amp;#34;TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256&amp;#34;
tls keypair &amp;#34;076.moe&amp;#34;
match request header append &amp;#34;X-Forwarded-For&amp;#34; value &amp;#34;$REMOTE_ADDR&amp;#34;
match request header append &amp;#34;X-Forwarded-Port&amp;#34; value &amp;#34;$REMOTE_PORT&amp;#34;
match response header set &amp;#34;X-Frame-Options&amp;#34; value &amp;#34;deny&amp;#34;
match response header set &amp;#34;X-XSS-Protection&amp;#34; value &amp;#34;1; mode=block&amp;#34;
match response header set &amp;#34;X-Content-Type-Options&amp;#34; value &amp;#34;nosniff&amp;#34;
match response header set &amp;#34;Strict-Transport-Security&amp;#34; value &amp;#34;max-age=31536000; includeSubDomains; preload&amp;#34;
match response header set &amp;#34;Permissions-Policy&amp;#34; value &amp;#34;accelerometer=()&amp;#34;
pass request quick header &amp;#34;Host&amp;#34; value &amp;#34;video.076.moe&amp;#34; forward to &amp;lt;video&amp;gt;
return error
pass
}
relay www_tls {
listen on $relayd_addr port 443 tls
protocol reverse
forward to &amp;lt;video&amp;gt; port 9000 check tcp
}
relay www_http {
listen on $relayd_addr port 80
protocol reverse
forward to &amp;lt;video&amp;gt; port 9000 check tcp
}
relay pt {
listen on $relayd_addr port 1935 tls
protocol reverse
forward to &amp;lt;video&amp;gt; port 19355 check tcp
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ポート1935番号は生配信の為です。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;rcctl &lt;span style=&#34;color:#a2f&#34;&gt;enable&lt;/span&gt; httpd
rcctl &lt;span style=&#34;color:#a2f&#34;&gt;enable&lt;/span&gt; relayd
rcctl start httpd
acme-client -v 076.moe
rcctl start relayd
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;nasfreebsd&#34;&gt;サーバNAS(FreeBSD)&lt;/h2&gt;
&lt;p&gt;FreeBSDを使う理由はZFSです。&lt;br /&gt;
インストールしながら、是非「ZFS」→「stripe」を選択して下さい。&lt;/p&gt;
&lt;p&gt;まずはSSDを確認して下さい&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;$ dmesg | grep ada
ada0 at ahcich0 bus &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt; scbus0 target &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt; lun &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;
ada0: &amp;lt;CT1000MX500SSD1 M3CR046&amp;gt; ACS-3 ATA SATA 3.x device
ada0: Serial Number
ada0: 600.000MB/s transfers &lt;span style=&#34;color:#666&#34;&gt;(&lt;/span&gt;SATA 3.x, UDMA6, PIO 512bytes&lt;span style=&#34;color:#666&#34;&gt;)&lt;/span&gt;
ada0: Command Queueing enabled
ada0: 953869MB &lt;span style=&#34;color:#666&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;1953525168&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;512&lt;/span&gt; byte sectors&lt;span style=&#34;color:#666&#34;&gt;)&lt;/span&gt;
ada1 at ahcich1 bus &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt; scbus1 target &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt; lun &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;
ada1: &amp;lt;Lexar SSD NQ100 960GB SN11873&amp;gt; ACS-4 ATA SATA 3.x device
ada1: Serial Number
ada1: 600.000MB/s transfers &lt;span style=&#34;color:#666&#34;&gt;(&lt;/span&gt;SATA 3.x, UDMA6, PIO 512bytes&lt;span style=&#34;color:#666&#34;&gt;)&lt;/span&gt;
ada1: Command Queueing enabled
ada1: 915715MB &lt;span style=&#34;color:#666&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;1875385008&lt;/span&gt; &lt;span style=&#34;color:#666&#34;&gt;512&lt;/span&gt; byte sectors&lt;span style=&#34;color:#666&#34;&gt;)&lt;/span&gt;
ses0: ada0,pass0 in &lt;span style=&#34;color:#b44&#34;&gt;&amp;#39;Slot 00&amp;#39;&lt;/span&gt;, SATA Slot: scbus0 target &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;
ses0: ada1,pass1 in &lt;span style=&#34;color:#b44&#34;&gt;&amp;#39;Slot 01&amp;#39;&lt;/span&gt;, SATA Slot: scbus1 target &lt;span style=&#34;color:#666&#34;&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ada1を作成しましょう。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;$ gpart create -s gpt ada1
$ gpart add -t freebsd-zfs -l disk1 ada1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;zpoolを作って下さい。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;$ zpool create backup ada1p1
$ zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
backup 888G 396K 888G - - 0% 0% 1.00x ONLINE -
zroot 920G 180G 740G - - 0% 19% 1.00x ONLINE -
$ zfs create zroot/peertube
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ada1はバックアップ用に使用しますが、具体的な方法についてはこの記事では説明しません。&lt;/p&gt;
&lt;p&gt;peertubeユーザーとグループを創作して下さい。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;$ pw groupadd peertube
$ pw useradd peertube -g peertube -s /usr/sbin/nologin -d /nonexistent -c &lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;PeerTube User&amp;#34;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;etcexports&#34;&gt;/etc/exports&lt;/h3&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;/zroot/peertube -maproot=peertube:peertube 192.168.0.104
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;etcrcconf&#34;&gt;/etc/rc.conf&lt;/h3&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;clear_tmp_enable=&amp;#34;YES&amp;#34;
syslogd_flags=&amp;#34;-ss&amp;#34;
hostname=&amp;#34;freebsdnas&amp;#34;
keymap=&amp;#34;jp.kbd&amp;#34;
ifconfig_re0=&amp;#34;inet 192.168.0.143 netmask 255.255.255.0&amp;#34;
defaultrouter=&amp;#34;192.168.0.1&amp;#34;
local_unbound_enable=&amp;#34;YES&amp;#34;
sshd_enable=&amp;#34;YES&amp;#34;
ntpd_enable=&amp;#34;YES&amp;#34;
rsyncd_enable=&amp;#34;YES&amp;#34;
moused_nondefault_enable=&amp;#34;NO&amp;#34;
# Set dumpdev to &amp;#34;AUTO&amp;#34; to enable crash dumps, &amp;#34;NO&amp;#34; to disable
dumpdev=&amp;#34;AUTO&amp;#34;
zfs_enable=&amp;#34;YES&amp;#34;
zfs_enable=&amp;#34;YES&amp;#34;
rpcbind_enable=&amp;#34;YES&amp;#34;
nfs_server_enable=&amp;#34;YES&amp;#34;
nfsd_flags=&amp;#34;-u -t -n 2&amp;#34;
mountd_enable=&amp;#34;YES&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;サービスを起動して下さい。&lt;/p&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;$ service rpcbind start
$ service mountd start
$ service nfsd start
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;peertubefreebsd&#34;&gt;サーバPeerTubeサーバ(FreeBSD)&lt;/h2&gt;
&lt;p&gt;FreeBSDを使う理由は、PeerTubeの開発者がOpenBSDをサポートしていない為です。&lt;br /&gt;
いつでも通りにPeerTubeをインストールして下さい(nginxの設定が不要です)。&lt;/p&gt;
&lt;h3 id=&#34;etcrcconf-1&#34;&gt;/etc/rc.conf&lt;/h3&gt;
&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;&lt;span style=&#34;color:#b8860b&#34;&gt;clear_tmp_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;syslogd_flags&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;-ss&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;hostname&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;peertubesrv&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;keymap&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;jp.kbd&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;ifconfig_re0&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;inet 192.168.0.104 netmask 255.255.255.0&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;defaultrouter&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;192.168.0.1&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;local_unbound_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;ifconfig_re0&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;DHCP&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;sshd_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#080;font-style:italic&#34;&gt;# Set dumpdev to &amp;#34;AUTO&amp;#34; to enable crash dumps, &amp;#34;NO&amp;#34; to disable&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;dumpdev&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;AUTO&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;zfs_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;shavit_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;postgresql_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;redis_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;postgresql_class&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;postgres&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;peertube_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;nginx_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;NO&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;nfs_server_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#b8860b&#34;&gt;nfs_client_enable&lt;/span&gt;&lt;span style=&#34;color:#666&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#b44&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code lang=&#34;&#34;&gt;$ &lt;span style=&#34;color:#a2f&#34;&gt;cd&lt;/span&gt; /var/www/peertube
$ rm -rf storage
$ mkdir storage
$ mount -t nfs 192.168.0.143:/zroot/peertube /var/www/peertube/storage
$ df -h
Filesystem Size Used Avail Capacity Mounted on
zroot/ROOT/default 92G 63G 29G 68% /
devfs 1.0K 0B 1.0K 0% /dev
zroot/tmp 29G 3.1M 29G 0% /tmp
zroot/usr/home 36G 7.2G 29G 20% /usr/home
zroot 29G 96K 29G 0% /zroot
zroot/var/audit 29G 96K 29G 0% /var/audit
zroot/var/log 29G 90M 29G 0% /var/log
zroot/usr/ports 31G 2.0G 29G 6% /usr/ports
zroot/var/crash 29G 96K 29G 0% /var/crash
zroot/var/tmp 29G 136K 29G 0% /var/tmp
zroot/var/mail 29G 444K 29G 0% /var/mail
zroot/usr/src 29G 96K 29G 0% /usr/src
192.168.0.143:/zroot/peertube 815G 103G 712G 13% /var/www/peertube/storage
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;以上&lt;/p&gt;
</content>
</entry>
</feed>

ファイルの表示

@ -2,6 +2,7 @@
# 記事一覧
=> /blog/freebsd-nas-auto-backup.gmi 2024年01月30日 【FreeBSD】簡単にNASの自動的にバックアップする方法
=> /blog/rice-productive.gmi 2024年01月04日 【プログラミング】生産力を増大する方法
=> /blog/anti-virus-dangerous.gmi 2023年12月25日 【セキュリティ】ウィルス対策ソフトは危険
=> /blog/programming-early-return.gmi 2023年12月21日 【プログラミング】アドバイス2:早期リターン

119
gemini/blog/freebsd-nas-auto-backup.gmi ノーマルファイル
ファイルの表示

@ -0,0 +1,119 @@
=> /blog.gmi ブログ一覧へ
# 【FreeBSD】簡単にNASの自動的にバックアップする方法
投稿日2024-01-30
=> /blog/digital-autonomy-076video-hosting.gmi 先月は「076動画ホスティングの解決策」という投稿を書きました。
先週の週末、このNASに4 TiBのSSDを追加しましたので、それによりGitlerと動画のストレージ容量が増大出来ました。
でも、バックアップならどうすれば良いですか?
今回はこれを解決すると思いますが、ちゃんと理解するには、まずは「076動画ホスティングの解決策」をご覧下さい。
## 必要なソフト
今回必要なソフトは1つだけで、rsyncです。
```sh
# doas pkg install rsync
```
## rootになれ
そこからrootアカウントで行います。
```sh
# doas su -l
$
```
## ZFSで使ってディスクを確認して
```sh
$ 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
```
## シェルスクリプトを作る
```sh
$ nvim sync-backups.sh && chmod +x sync-backups.sh
```
この「 && chmod +x sync-backups.sh」の部分は、「sync-backups.sh」を保存して終了したら、直ぐに実行可能にして下さいという意味です。
```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を変更しましょう。
```sh
$ crontab -e
```
```
0 0,6,12,18 * * * /root/sync-backups.sh
```
それで、毎日4回 (0:00、6:00、12:00、そうして18:00で) バックアップのスクリプトを実行されます。
以上

ファイルの表示

@ -3,6 +3,7 @@
# avatar = gemini://076.moe/static/suwako.jpg
# description = テクニカル諏訪子様のtwtxtフィード
# link = ホームページ gemini://technicalsuwako.moe
2024-01-30T00:00:00Z09:00 【FreeBSD】簡単にNASの自動的にバックアップする方法 - gemini://technicalsuwako.moe/blog/freebsd-nas-auto-backup.gmi
2024-01-04T00:00:00Z09:00 【プログラミング】生産力を増大する方法 - gemini://technicalsuwako.moe/blog/rice-productive.gmi
2023-12-25T00:00:00Z09:00 【セキュリティ】ウィルス対策ソフトは危険 - gemini://technicalsuwako.moe/blog/anti-virus-dangerous.gmi
2023-12-21T00:00:00Z09:00 【プログラミング】アドバイス2:早期リターン - gemini://technicalsuwako.moe/blog/programming-early-return.gmi

119
src/blog/freebsd-nas-auto-backup.md ノーマルファイル
ファイルの表示

@ -0,0 +1,119 @@
title: 【FreeBSD】簡単にNASの自動的にバックアップする方法
author: 凜
date: 2024-01-30
tags: jp,blog,freebsd,nas,デジタル自主
----
[先月は「076動画ホスティングの解決策」という投稿を書きました。](/blog/digital-autonomy-076video-hosting.gmi)\
先週の週末、このNASに4 TiBのSSDを追加しましたので、それによりGitlerと動画のストレージ容量が増大出来ました。\
でも、バックアップならどうすれば良いですか?\
今回はこれを解決すると思いますが、ちゃんと理解するには、まずは「076動画ホスティングの解決策」をご覧下さい。
## 必要なソフト
今回必要なソフトは1つだけで、rsyncです。
```sh
# doas pkg install rsync
```
## rootになれ
そこからrootアカウントで行います。
```sh
# doas su -l
$
```
## ZFSで使ってディスクを確認して
```sh
$ 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
```
## シェルスクリプトを作る
```sh
$ nvim sync-backups.sh && chmod +x sync-backups.sh
```
この「 && chmod +x sync-backups.sh」の部分は、「sync-backups.sh」を保存して終了したら、直ぐに実行可能にして下さいという意味です。
```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を変更しましょう。
```sh
$ crontab -e
```
```
0 0,6,12,18 * * * /root/sync-backups.sh
```
それで、毎日4回 (0:00、6:00、12:00、そうして18:00で) バックアップのスクリプトを実行されます。
以上

ファイルの表示

@ -1,7 +1,7 @@
#!/bin/sh
SRV=192.168.0.103
RSYNCOPT=-rtvzP
RSYNCOPT="-vaHz --delete"
HTTPHOME=/var/www/htdocs/technicalsuwako.moe
GMIHOME=/var/gemini/technicalsuwako.moe