TrueNAS 挂载 NTFS 移动硬盘做冷备份

出于对数据保护的执念,我对 TrueNAS 江苏党性培训 www.jxganxun.cn 中的数据采取了加盐加密云备份 + 移动硬盘冷备的措施。

一方面多地存储更安全,不可能我的硬盘、我的移动硬盘和云厂商的硬盘三者同时崩溃;

另一方面也最大限度的在不把 TrueNAS 暴露到公网的情况下,在外出时便捷的获取数据。经历过公司群晖仅暴露一个非常罕见的端口就被暴力攻击的事件以后,我是不敢把自己的 NAS 暴露出去的。我可以通过云服务商下载数据,然后解密;也可以直接在外出时带上我的移动硬盘。

而为了最大限度保持数据的兼容性,保证在任何电脑都可以读取,移动硬盘的文件格式我选择了 NTFS,既可以支持 TrueNAS、Winodws,也可以支持 MacOS(需软件)。当然最好的方式还是 exfat,MacOS 无需软件也可以支持,不过目前尚未找到 TrueNAS 支持 exfat 的方案。

下面是正文。

 

一、挂载 NTFS 移动硬盘

1. 第一次挂载前,需开启 fuse:

系统、微调、添加以下两项:

变量:fuse_load

值:YES

类型:LOADER

 

变量:fuse_enable

值:YES

类型:rc.conf

  然后在命令行(或 SSH)中运行:

kldload fuse

 

2. 挂载 NTFS 硬盘:

首先在存储、磁盘中确认哪个是你的硬盘,一般可通过大小、型号(点击右侧列,勾选型号)来辨认,此外 TrueNAS 内部的硬盘名称一般是 ada 开头,你刚刚插入的硬盘一般也会是最后一个。比如我挂了一块希捷的 4T 硬盘,那么很明显是最后这个:

 

 记住硬盘名称后,在命令行或 SSH 中运行:

# 请注意以下硬盘号、路径修改为你自己的设置ls /dev/da1*  # 查看硬盘分区gpart show /dev/da1* # 查看各分区大小,确定要挂载的分区是哪个mkdir /mnt/exhdd # 创建你要挂载到的目录ntfs-3g /dev/da1p1 /mnt/exhdd

因为我们需要向移动硬盘复制数据,所以我直接挂载了读写格式,如果你只是想读取文件,可以加上 -o -ro 参数。

关于 ntfs-3g 命令的其他参数,可以运行 man ntfs-3g 来获取说明书。

 

注:因为我习惯插入硬盘后手动挂载,如果你想要进一步做到开机自动挂载(即 TrueNAS 重启后,可以自动挂载),可参考这篇文章:http://baodad.blogspot.com/2016/05/freenas-mount-and-share-ntfs-partition.html

 

二、复制数据 & 设置自动复制任务

复制数据建议使用 rsync 代替 cp 命令。rsync 提供了非常丰富的参数指令,详见 http://www.ruanyifeng.com/blog/2020/08/rsync.html。

这里我们采取最简单的 -a 递归指令(复制文件以及所有子文件夹的文件),以及 --exclude 排除指令。此外由于 Unix 系统的 cron 计划任务是没有执行结果的(出错时可查看 cron 日志或 mail 中的信息),因此我习惯把命令执行的结果通过 >> 指令输出到指定日志中,我建立了一个存放各个程序日志的数据集,这个看个人喜好。

如果你都能接受以上喜好,可以查看下文,直接复制我的命令。如果你不能接受,请自行修改命令。

1. 模拟复制数据,确保配置正确

# 如果没有需要排除的文件夹,可以直接删去 exclude 参数# -n 参数用于模拟运行,并不会实际操作# -v 参数用于列出所有将会被传输的文件,配合 -n 参数模拟运行,查看是否配置正确rsync -a --exclude={'你要排除的文件或文件夹1', 'xxx2', 'xxx3'} /mnt/media/data /mnt/exhdd/data >> /mnt/media/logs/rsyncdata.log# 请确保目的路径、日志存储的路径已建立。如未建立,运行:mkdir -p /mnt/exhdd/datamkdir -p /mnt/media/logs

其中,第一个路径是源路径,第二个路径是目的路径。执行完毕后,查阅日志文件,查看列出的将会被传输的文件是否与你的预期相符。如果文件太多不方便查看,也可以直接拉到日志的最后,查看总大小,然后对比你源路径本身想要传输的总大小。确认一致就没有问题。比如:

 

注:如果你不需要计划任务,只需要执行一次复制,那么接下来,重复执行上方命令,并删去 -n、-v 参数即可,对你来说本文到此结束。

 

2. 设置计划任务

我设置的计划是每天凌晨 3 点复制一次。如果你的文件更新的更频繁、对文件版本有更高要求,可以自行修改计划时间,比如更改为每小时运行。

我们的计划任务是基于 cron 运行的,关于 cron 的用法,以及,如果你更习惯命令行的操作,可参考 https://www.cainiao.io/archives/505 这篇文章来操作。

这里我们使用 TrueNAS 的 Web UI 来设置,一来比较方便,二来也可以直观看到任务列表。

打开 任务、计划任务、添加:

描述:自行添加,可以不填。建议填写为你能看懂的文字,便于日后管理。

命令:即上方模拟运行的命令中,删去 -v、-n 参数:

    rsync -a --exclude={'你要排除的文件或文件夹1', 'xxx2', 'xxx3'} /mnt/media/data /mnt/exhdd/data >> /mnt/media/logs/rsyncdata.log

用户身份:root (如果你需要其他用户,那么可能需要修改权限,详见参考资料)

计划:Custom,然后按下图设置。你也可以稍微研究下这个界面,其实非常简单,可以很从容的设定自己想要的执行计划:

 之后,取消勾选隐藏标准输出、隐藏标准错误,勾选已启用,点击保存即可。

 

3. 移除硬盘

需要移除掉硬盘,带出门的时候,运行以下命令之后拔掉即可:

 

umount /mnt/media/exhdd # 替换为你之前挂载的路径

 

  

 

参考资料
  • http://www.ruanyifeng.com/blog/2020/08/rsync.html
  • http://kflu.github.io/2018/02/03/2018-02-03-freebsd-ntfs/
  • http://baodad.blogspot.com/2016/05/freenas-mount-and-share-ntfs-partition.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值