⚠️ 免责声明与风险提示
本文仅供技术学习、交流与个人参考,不构成任何明示或默示的保证、担保或承诺。文中涉及的命令与操作具有潜在风险,可能导致数据丢失、系统不稳定或其他不可预见的损失。
您应自行承担使用本文任何信息所带来的一切风险与全部后果。
作者明确声明,对于因使用或依赖本文内容而造成的任何直接或间接损失,不承担任何责任。
在尝试任何操作之前,您必须:
1. 完成全部重要数据的完整、可恢复备份。
2. 确保已完全理解每一条命令的具体含义及潜在影响。
3. 在隔离的测试环境中先行验证。
记得十几年前,财务部门的同事们,人手一个u盘,一股脑的往里塞文件,excel表格,word文档,照片,网页,txt文件,常见的格式基本都能在u盘看到。
很多人还直接在u盘进行编辑,让u盘上残留大量各种各样的临时文件对了,还有各种chk扫描文件。
办公电脑上的数据也不可靠,经常说没就没了。
当时应该是win98-win7时期吧,很多人也不知道整理磁盘碎片,硬盘分区也不合理,什么都一股脑往C盘装,一旦出现问题,不管是单位的网管还是外部的电脑维修师傅,一招搞定-Ghost重装,也不管备份,顶多说一句,都拷出来了吗,重装可就没有了。
这就导致了办公电脑上的文件很不保险。
以前的这些场景,在当前也是普遍现象。律所的几个老大哥,要么一个u盘"走天下",要么win98的c盘只剩500MB,没错,还在用win98。
上面的这些情况,不管是电脑硬盘上的文件也好,随身携带的u盘也好,里面的某些文件有可能哪天冷不丁就打不开了。
另外一个情况就是,如果存储介质丢失了,里面的信息就有可能泄露。作为律师,保护客户的信息可是第一位的,案件材料中往往有大量客户信息、个人隐私等等。因此管理好数据文件安全,是重中之重。
应该从两个方面考虑:
- 文件的安全可读
- 丢失防止被读取
根据这两个方面,我把数据文件安全分成五大类型:
- 第一类,就是上面说的,用u盘或移动硬盘存储,没有抗风险性,可称之为"数据文件裸奔级"。
- 第二类,在第一类的基础上,增加了加密防丢失后的被读取,比如带加密软件的u盘(移动硬盘),或者启用Bitlocker,可称之为"入门级"。但仍然无法保证文件能正常读取。
- 第三类,在第二类基础上,增加同步功能,这个功能尤其好用,因为数据文件往往是长时间的累积产生,在不同的电脑上都使用过,不知道哪个副本的内容是最新的,如果逐个人工对比,几个小时估计搞不定,纯靠记忆,相当不靠谱。因此引入了同步功能,比如SyncToy,freefilesync等等。这种主要是靠数据库+对比修改时间和文件名和文件大小的方式进行对比,属于文件级别的比较。如果出现相同修改时间、文件名相同、文件大小相同、内容不同的文件,也避免不了文件丢失。而且也解决不了数据位随时间衰减或静默数据损坏。
- 第四类,在第三类的基础上,增加内容对比功能,就是检查文件的哈希值,保证文件一致,比如用unison。缺点是,当文件很多的时候,初次运行相当的耗费时间,后续使用速度会好很多。但仍无法解决一个问题:Windows突然断电时,正在写入的文件可能损坏或丢失。
- 第五类,彻底放弃 Windows 下缺乏完整性校验的文件系统(如 NTFS),使用先进的ZFS系统。本文简单介绍一下第五类方案的思路及步骤。作为非计算机专业技术人员,该方案仅在本人电脑验证过,不保证所有电脑均可实施。如果抛去windows环境不用,那这个方案的意义就会大打折扣,毕竟windows当前是主流。因此本方案,是在windows下,实现使用ZFS同步和备份数据文件。
ZFS的优点:支持数据校验和、快照、压缩、原生加密等等。可自行官网搜索详细介绍,这里不再赘述。
方案具体步骤如下
- windows中安装vmware workstation(本文基于26H1)
- 虚拟机安装Freebsd(本文基于15p9)
- 虚拟机安装open-vm-tools并进行设置
pkg install open-vm-tools
sysrc vmware_guest_vmblock_enable="YES"
sysrc vmware_guest_vmhgfs_enable="YES"
sysrc vmware_guest_vmmemctl_enable="YES"
sysrc vmware_guest_vmxnet_enable="YES"
- 加载内核
kldload fusefs
- 虚拟机设置文件共享
虚拟机关机状态,点击virtual machine settings→options→shared folders→always enabled→add folders
运行虚拟机,挂载刚才的共享文件夹
mkdir -p /mnt/123
vmhgfs-fuse .host:/123 /mnt/123 -o allow_other
- 插入移动硬盘
选择虚拟机独占,检查移动硬盘名称,这里假设da1
camcontrol devlist
清除重建(注意!!!所有该硬盘已存储的文件都会被破坏!!)
⚠️ 高风险操作
以下操作会永久删除移动硬盘上的所有数据,请务必确认设备名称,避免误操作。
gpart destroy -F da1
清除原先win的残留信息-清除原有分区表
风险操作!!!风险操作!!!风险操作!!!
gpart create -s GPT da1
gpart add -t freebsd-zfs -l 123 da1
上面两个命令重新创建gpt信息,这可以防止移动硬盘插入windows电脑中时,系统提示初始化,不小心破坏了数据。因为windows检测到有gpt信息就不会提示初始化,一定程度上避免数据在windows系统中遭到破坏,需要注意,这个硬盘在win下无法使用,虽然在磁盘管理器中能看到信息。
- 建立新池
zpool create -o ashift=12 \
-O encryption=aes-256-gcm \
-O keyformat=passphrase \
123_pool /dev/gpt/123
会提示输入密码,这是ZFS原生加密,可以想象成Bitlocker,有更多高级的用法。
- 同步数据
rsync -av --progress /mnt/123/ /123_pool/123/
注意mnt的123后面一定要有"/"
否则的话rsync会把mnt的123作为一个整体,复制到pool的123中,也就是说,会出现pool/123/123这样的情况。
下次增量同步可以使用
rsync -av --progress --delete /mnt/123/ /123_pool/123/
- 创建快照
zfs snapshot 123_pool@2026-06-03
(自行设置日期)
- 安全退出移动硬盘
zpool export 123_pool
以上就是整个方案的思路和一个大概的步骤。
有兴趣的,欢迎联系讨论交流。
⚠️ 再次提醒:免责声明与风险提示
本文仅供技术学习、交流与个人参考,不构成任何明示或默示的保证、担保或承诺。文中涉及的命令与操作具有潜在风险,可能导致数据丢失、系统不稳定或其他不可预见的损失。
您应自行承担使用本文任何信息所带来的一切风险与全部后果。
作者明确声明,对于因使用或依赖本文内容而造成的任何直接或间接损失,不承担任何责任。
在尝试任何操作之前,您必须:
1. 完成全部重要数据的完整、可恢复备份。
2. 确保已完全理解每一条命令的具体含义及潜在影响。
3. 在隔离的测试环境中先行验证。