如何在Linux上创建基于云的加密文件系统如何在Linux上创建基于云的加密文件系统如何在Linux上创建基于云的加密文件系统如何在Linux上创建基于云的加密文件系统
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在Linux上创建基于云的加密文件系统

Amazon S3 和 Google Cloud Storage 等商业云存储服务以可承受的成本提供高度可用、可扩展、无限容量的对象存储。为了加速其云产品的广泛采用,这些提供商正在围绕其基于明确定义的 API 和 SDK 的产品培育丰富的开发人员生态系统。云支持的文件系统是这种活跃的开发人员社区的流行副产品之一,存在多种开源实现。

S3QL 是最流行的开源基于云的文件系统之一。它是一个基于 FUSE 的文件系统,由多个商业或开源云存储支持,例如 Amazon S3、Google Cloud Storage、Rackspace CloudFiles 或 OpenStack。作为一个全功能的文件系统,S3QL 拥有许多强大的功能,例如无限容量、高达 2TB 的文件大小、压缩、UNIX 属性、加密、写时复制快照、不可变树、重复数据删除、硬链接/符号链接支持等。写入 S3QL 文件系统的任何字节在传输到云后端之前都会在本地压缩/加密。当您尝试读取存储在 S3QL 文件系统中的内容时,将从云端下载相应的对象(如果不在本地缓存中),并即时解密/解压缩。

需要明确的是,S3QL 确实有局限性。例如,您不能同时在多台计算机上安装相同的 S3FS 文件系统,但一次只能安装一次。此外,不提供 ACL(访问控制列表)支持。

在本教程中,我将描述如何使用 S3QL 在 Amazon S3 上设置加密文件系统。作为示例用例,我还将演示如何在已安装的 S3QL 文件系统上运行 rsync 备份工具。

准备

要使用本教程,您需要创建一个 Amazon AWS 帐户(免费注册,但需要有效的信用卡)。

如果您尚未这样做,请首先创建一个 AWS 访问密钥(访问密钥 ID 和秘密访问密钥),需要该密钥来授权 S3QL 访问您的 AWS 账户。

现在,通过AWS管理控制台转到AWS S3,并为S3QL创建一个新的空存储桶。

为了获得最佳性能,请选择地理位置距离您最近的区域。

在 Linux 上安装 S3QL

S3QL 在大多数 Linux 发行版上作为预构建包提供。

在 Debian、Ubuntu 或 Linux Mint 上:


$ sudo apt-get install s3ql

在费多拉上:


$ sudo yum install s3ql

在 Arch Linux 上:

在 Arch Linux 上,使用 AUR。

首次配置S3QL

在~/.s3ql目录下创建authinfo2文件,该文件是默认的S3QL配置文件。此文件包含有关所需 AWS 访问密钥、S3 存储桶名称和加密密码的信息。加密密码用于加密随机生成的主加密密钥。然后使用该主密钥来加密实际的 S3QL 文件系统数据。


$ mkdir ~/.s3ql
$ vi ~/.s3ql/authinfo2

[s3]
storage-url: s3://[bucket-name]
backend-login: [your-access-key-id]
backend-password: [your-secret-access-key]
fs-passphrase: [your-encryption-passphrase]

您指定的 AWS S3 存储桶应事先通过 AWS 管理控制台创建。

仅出于安全考虑,将 authinfo2 文件设置为可供您读取。


$ chmod 600 ~/.s3ql/authinfo2

创建 S3QL 文件系统

您现在已准备好在 AWS S3 之上创建 S3QL 文件系统。

使用mkfs.s3ql命令创建一个新的S3QL文件系统。您通过命令提供的存储桶名称应与 authinfo2 文件中的存储桶名称匹配。 --ssl 选项强制您使用 SSL 连接到后端存储服务器。默认情况下,mkfs.s3ql 命令将在 S3QL 文件系统中启用压缩和加密。


$ mkfs.s3ql s3://[bucket-name] --ssl

系统将要求您输入加密密码。输入您在 ~/.s3ql/autoinfo2 中定义的相同密码(在 fs-passphrase 下)。

如果成功创建新文件系统,您将看到以下输出。

挂载 S3QL 文件系统

创建 S3QL 文件系统后,下一步就是安装它。

首先,创建本地挂载点,然后使用 mount.s3ql 命令挂载 S3QL 文件系统。


$ mkdir ~/mnt_s3ql
$ mount.s3ql s3://[bucket-name] ~/mnt_s3ql

您不需要特权访问即可挂载 S3QL 文件系统。只需确保您对本地安装点具有写访问权限即可。

或者,您可以通过 --compress 选项指定要使用的压缩算法(例如,lzma、bzip2、zlib)。如果没有它,默认使用lzma算法。请注意,当您指定自定义压缩算法时,它将应用于新创建的数据对象,而不是现有的数据对象。


$ mount.s3ql --compress bzip2 s3://[bucket-name] ~/mnt_s3ql

出于性能原因,S3QL 文件系统维护本地文件缓存,用于存储最近访问的(部分或完整)文件。您可以使用 --cachesize 和 --max-cache-entries 选项自定义文件缓存大小。

要允许您以外的其他用户访问已安装的 S3QL 文件系统,请使用 --allow-other 选项。

如果您想通过 NFS 将已安装的 S3QL 文件系统导出到其他计算机,请使用 --nfs 选项。

运行mount.s3ql后,检查S3QL文件系统是否挂载成功:


$ df ~/mnt_s3ql
$ mount | grep s3ql

卸载 S3QL 文件系统

要安全卸载 S3QL 文件系统(可能包含未提交的数据),请使用 umount.s3ql 命令。它将等待,直到所有数据(包括本地文件系统缓存中的数据)已成功传输并写入后端服务器。根据写入待处理数据的量,此过程可能需要一些时间。


$ umount.s3ql ~/mnt_s3ql

查看 S3QL 文件系统统计信息并修复 S3QL 文件系统

要查看S3QL文件系统统计信息,您可以使用s3qlstat命令,该命令显示数据/元数据总大小、重复数据删除和压缩率等信息。


$ s3qlstat ~/mnt_s3ql

您可以使用 fsck.s3ql 命令检查和修复 S3QL 文件系统。与fsck命令类似,需要先卸载正在检查的文件系统。


$ fsck.s3ql s3://[bucket-name]

S3QL 用例:rsync 备份

让我以 S3QL 的一个流行用例来结束本教程:本地文件系统备份。为此,我建议使用 rsync 增量备份工具,特别是因为 S3QL 附带了 rsync 包装脚本 (/usr/lib/s3ql/pcp.py)。此脚本允许您使用多个 rsync 进程将源树递归复制到 S3QL 目标。


$ /usr/lib/s3ql/pcp.py -h

以下命令将通过四个并发 rsync 连接将 ~/Documents 中的所有内容备份到 S3QL 文件系统。


$ /usr/lib/s3ql/pcp.py -a --quiet --processes=4 ~/Documents ~/mnt_s3ql

文件将首先复制到本地文件缓存,然后在后台随着时间的推移逐渐刷新到后端服务器。

有关 S3QL 的更多信息,例如自动挂载、快照、不可变树,我强烈建议您查看官方用户指南。让我知道您对 S3QL 的看法。分享您使用任何其他工具的经验。

©2015-2025 艾丽卡 support@alaica.com