![使用 ecryptfs 加密非空文件夹](https://linux22.com/image/1072996/%E4%BD%BF%E7%94%A8%20ecryptfs%20%E5%8A%A0%E5%AF%86%E9%9D%9E%E7%A9%BA%E6%96%87%E4%BB%B6%E5%A4%B9.png)
我有一些文件夹,里面有很多大文件,我想使用 ecryptfs 对它们进行加密。
我想知道是否可以挂载一个已经有文件(以及包含文件的子文件夹)的文件夹,或者我是否必须创建一个新的空目录,挂载该目录,然后复制文件,这是迄今为止有效的方法,但由于我必须复制的数据量很大,我想避免这种情况。
编辑:一些额外的信息,我在 Ubuntu 20.04.5 上,我也想加密网络驱动器上的类似文件夹,不确定这是否会改变可能的解决方案
答案1
eCryptfs(以及基本上任何磁盘加密,如 LUKS 等)只能通过加密文件并将加密数据写入磁盘来工作。没有捷径可以避免将所有数据写入磁盘。
如果您只是想要即时“加密查看”您的文件(可能仅用于远程存储),那么 EncFS 可以使用其--reverse
选项来实现:
如果您想要一个自动化工具来将现有用户的 home 迁移到 ecryptfs 加密 home 设置,则可以使用该ecryptfs-migrate-home
工具(在包中ecryptfs-utils
),但它只会自动创建一个加密目录,将旧 home 复制到其中,然后将其设置为新 home。它有一些警告:
警告:将未加密数据的完整备份到另一个系统或外部媒体。此脚本很危险,一旦发生错误,可能会导致数据丢失或用户被锁定在系统之外!
此程序需要的可用磁盘空间为要迁移的主目录当前大小的 2.5 倍。成功后,您可以通过删除明文目录来恢复大部分空间。
听起来你已经可以手动复制到加密目录了,也许一点自动化复制、验证,然后一次删除几个文件会加快速度,但这是另一个话题。
如果您只是希望立即“加密查看”您的文件(可能仅用于远程存储),那么 EncFS 可以使用其--reverse
选项来实现这一点,但您的原始文件仍将未加密地保留在您的磁盘上:
通常,EncFS 会按需提供数据的纯文本视图:它存储加密数据并显示纯文本数据。使用 --reverse 时,它会将纯文本数据作为源并按需生成加密数据。这对于创建远程加密备份非常有用,因为您不希望本地文件保持未加密状态。
例如,下面将在 /tmp/crypt-view 中创建一个加密视图。
encfs --reverse /home/me /tmp/crypt-view
然后,您可以复制 /tmp/crypt-view 目录以获取加密数据的副本。您还必须保留包含文件系统信息的文件 /home/me/.encfs6.xml 的副本。两者结合起来可用于重现未加密的数据:
ENCFS6_CONFIG=/home/me/.encfs6.xml encfs /tmp/crypt-view /tmp/plain-view
现在 /tmp/plain-view 包含与 /home/me 相同的数据
请注意,--reverse 模式仅适用于有限的配置选项,因此使用时可能会禁用许多设置。目前不兼容的选项:文件名初始化向量链接和外部 IV 链接。