使用ecryptfs加密非空本地及网络驱动器文件夹的可行性咨询
使用ecryptfs加密非空本地及网络驱动器文件夹的可行性咨询
首先直接给你结论:没法直接挂载已有文件的文件夹让ecryptfs自动加密里面的内容,但你完全可以不用全量复制数据——只要用「移动」操作替代复制,同一分区/同网络挂载点下的移动几乎是瞬间完成的,根本不用等很久。下面分本地和网络驱动器两种情况给你具体步骤:
本地文件夹(Ubuntu 20.04)
假设你要加密的文件夹是/data/my_big_files,里面有大量文件和子文件夹:
- 先装必备工具:
sudo apt update && sudo apt install ecryptfs-utils - 关闭所有正在访问这个文件夹的程序(比如文件管理器、终端窗口),避免文件被占用。
- 做个简单的备份(可选但保险,比如把重要文件复制到U盘)。
- 创建两个目录:一个用来存加密后的原始数据,一个作为解密后的访问入口:
# 存加密数据的目录(以后不用直接碰它) mkdir /data/my_big_files_encrypted # 解密后的访问目录(临时用,之后会改成原文件夹名) mkdir /data/my_big_files_decrypted - 挂载ecryptfs,把加密数据目录和访问目录关联起来:
跟着提示走:sudo mount -t ecryptfs /data/my_big_files_encrypted /data/my_big_files_decrypted- 输入加密密码(记牢,丢了就找不回数据了)
- 选择加密算法(推荐
aes,默认选项一般就可以) - 是否启用文件名加密(选
y更安全) - 其他选项按默认来就行,最后确认设置是否正确。
- 现在把原文件夹里的所有内容移动到解密访问目录里:
划重点:同一分区下的移动是瞬间完成的,只是修改文件系统的元数据,不会复制数据,完全不用怕耗时!mv /data/my_big_files/* /data/my_big_files_decrypted/ - 清理并还原原文件夹名:
# 删除空的原文件夹 rmdir /data/my_big_files # 把解密目录改成原来的名字,以后访问这个名字就可以 mv /data/my_big_files_decrypted /data/my_big_files - (可选)如果要开机自动挂载,把挂载参数加到
/etc/fstab里,不过要先通过ecryptfs-add-passphrase --fnek生成密钥,避免每次开机输密码。
网络驱动器的情况
思路和本地类似,但要注意几个关键点:
- 先确保你的网络驱动器已经正常挂载到本地(比如
/mnt/network_drive,不管是SMB还是NFS)。 - 步骤和本地基本一致:
- 在网络驱动器上创建加密数据目录:
mkdir /mnt/network_drive/my_big_files_encrypted - 在本地创建解密访问目录:
mkdir ~/network_decrypted - 挂载ecryptfs:
sudo mount -t ecryptfs /mnt/network_drive/my_big_files_encrypted ~/network_decrypted - 配置加密参数后,把网络驱动器上原有的非空文件夹内容移动到解密目录里(如果是同一网络挂载点下的移动,多数网络文件系统也支持瞬间完成,不会复制数据)。
- 在网络驱动器上创建加密数据目录:
- 额外注意事项:
- 网络延迟会叠加加密解密的开销,访问速度可能比本地慢一些。
- 确保网络连接稳定,挂载过程中不要断网,否则可能导致文件损坏。
- 不要直接修改网络驱动器上的
my_big_files_encrypted目录里的文件,所有操作都通过本地的解密访问目录来做。
最后再解释下为什么不能直接挂载已有文件的文件夹:ecryptfs是个「透明加密层」,只有通过这个层写入的文件才会被加密成它能识别的格式,原有未加密的文件挂载后根本看不到,也不会被自动加密。所以必须把文件移到加密层里,让ecryptfs处理成加密格式——但用移动操作就完全不用怕数据复制的问题啦。
备注:内容来源于stack exchange,提问作者Michele
相关产品推荐
相关产品推荐

