preface
Recently, I’ve been setting up a file backup server and need to use RESTIC to perform backups on a regular basis.
These are the tutorials I found.
redhat
I use rhel btw. 其实 rocky 也差不多, 但是 rhel 对于个人可以免费使用(16 台设备), 尝试一下. 我看了这篇 博客, 关于免费使用 rhel 的. 但是博客写于 2022 年, 里面提到的 management/systems 这个地址已经不存在了.
免费使用的思路很简单:
- 下载镜像
- 安装
- 登录账号(当然要先注册啦), 登录的时候不要使用邮箱, 而是使用用户名, 上面博客提到的.
- 可能登录不上, 要去同意一个条款, 请看 这里
- 软件源选择 redhat cdn
- 似乎就结束了. 博客中要选择机器, 但是现在似乎不用了, 但是要每年更新一个订阅信息, 到时候再说吧.
zfs
我有 4 块 1T 的空闲硬盘, 是用于备份数据的, 备份用的软件是 restic, 关于这个软件, 我其实有点担心, 因为 restic 使用的都是一些索引, 我很怕: 因为磁盘某一比特的翻转, 导致我整个备份的 repo 都废了. 我考虑了使用 raid5. 进入 bios, 发现我手上的这款 thinkserver 没有内置 raid; 上几款购物平台, 没有什么想要的 raid 卡; 想到 lvm, 因为红帽系的 fs 默认是 xfs + lvm. 忽然脑袋里灵光一现: zfs 在召唤我.
installation
我的操作如下, 请注意, 我用的是 rhel9.5
- for el9(enterprise linux)
|
|
- install software itself
|
|
- load module right now
|
|
- enable module at each boot
|
|
拍案: 不要轻易自己切换内核版本, 因为 module 是跟内核版本的, 放在 /lib/modules/xxx 中. 自己切换了内核版本后, 可能会导致: 一些 module 无法被加载.
create raid zpool
|
|
mount on /home
|
|
当然啦, 我是把原本 lvm 分区删掉了:
- delete /home volumn
|
|
-
delete entry in /etc/fstab
-
extend the root volumn
|
|
拍案: zfs set mountpoint 是持久化的, 重启后依然有效, 不必添加表项到 /etc/fstab.
samba
考虑到, 我们有业务: Jackson, Jenny, Diana, …
为他们创建在服务器的共享, 需要如下步骤
- add linux group
|
|
- add linux user
|
|
- smbpasswd for user
|
|
可以通过如下命令验证 samba 用户
|
|
homes
/etc/samba/smb.conf
是 samba 服务的配置文件, 他默认提供了一些内容, 其中 homes 非常好.
|
|
这个 %S
就是 samba 用户, 具体看 man(5) smb.conf
.
其实我也不太清楚, 问问 GPT, 特别是第二个 %D%w%S
更是没有看懂.
我下面有一个需求, 我要让 jennifer/simon 可以查看其他用户的家目录共享, 我可以:
|
|
同时, 我需要让 jennifer/simon 加入到其他用户的组里面, 并把相应用户的家目录权限设置为 rwxrwx—(755)
|
|
验证一下 ?
|
|
确实能正常工作.
共享目录
在 /etc/samba/smb.conf 中追加一条记录. valid users 设置为 market 这个组中的用户.
|
|
restic
这里 quickstart 几乎演示了怎么玩.
restic init --repo <repo>
创建仓库restic backup /path/to/src --repo <repo>
将 src 备份进 repo 中restic snapshots --repo <repo>
查看快照restic mount /mount/point -repo <repo>
挂载出来, 可以在挂载的时候加上--allow-other
这个选项.
还有一些小细节啥的, 比方说可以从环境变量RESTIC_PASSWORD
处读取密码, 这可以用在非交互式环境等.
比方说我的这个 systemd 定期备份脚本.
mount.cifs
可以使用 mount.cifs 来挂载远程的 samba 共享到本地.
因为我这里是局域网, 所以我明文的进行挂载, 但是这样不好,
如果有程序读取 .bash_history
那么也废了一半.
我这里在挂载的时候, 写了一个只读的选项, 就是怕误操作.
|
|
systemd executes restic on a regular basis
我写了一个脚本, 仓库在这里
值得注意的一点: 需要将 backup.service 的 service’s type 设置为 notify,
然后在 python 中设置: systemd.daemon.notify("READY=1")
,
不然就会出现一个现象: systemctl start backup.service
后不返回,
如果 <C-c>
, 那么可以在 systemctl status backup.service
的时候发现 failed,
这是因为没有变成守护进程: 没有与控制终端分离.
即使用了 python-daemon, 那其实也有问题, 不信可以试试.
这也是我参考别人的
效果
windows server 2016 openssh
installation openssh
我看了这篇博客. 请看前半段, 后面 firewall 的设置可以不看, 看下面.
firewall: allow openssh port
我看了 stackoverflow 这篇帖子
省流:
|
|
set ssh public key on windows server
我看了这篇博客.
里面需要注意一下几点
- windows openssh-server
需要手动
PubkeyAuthentication yes
和StrictModes no
- Administrator 用户的 authorized_keys 需要单独设置 administrators_authorized_keys
具体请看上面博客.
haskell
注意一个问题, 如果是新装的 rhel9, cabal install hlint
的时候可能会有一些报错, 需要安装 32bit 的 libc
|
|