2024年11月Linux使用S3QL创建加密文件系统的方法(2)

发布时间:

  ⑴首次配置 SQL

  ⑵在 ~/.sql 目录中创建 autoinfo 文件,它是 SQL 的一个默认的配置文件。这个文件里的信息包括必须的 AWS aess key,S bucket 名,以及加密口令。这个加密口令将被用来加密一个随机生成的主密钥,而主密钥将被用来实际地加密 SQL 文件系统数据。

  ⑶$ mkdir ~/.sql

  ⑷$ vi ~/.sql/authinfo

  ⑸storage-url: s://[bucket-name]

  ⑹backend-login:[your-aess-key-id]

  ⑺backend-password:[your-secret-aess-key]

  ⑻fs-passphrase:[your-encryption-passphrase]

  ⑼指定的 AWS S bucket 需要预先通过 AWS 管理面板来创建。

  ⑽为了安全起见,让 authinfo 文件仅对你可访问。

  ⑾$ chmod ~/.sql/authinfo

  ⑿创建 SQL 文件系统

  ⒀现在你已经准备好可以在 AWS S 上创建一个 SQL 文件系统了。

  ⒁使用 mkfs.sql 工具来创建一个新的 SQL 文件系统。这个命令中的 bucket 名应该与 authinfo 文件中所指定的相符。使用“--ssl”参数将强制使用 SSL 连接到后端存储服务器。默认情况下,mkfs.sql 命令会在 SQL 文件系统中启用压缩和加密。

  ⒂$ mkfs.sql s://[bucket-name] --ssl

  ⒃你会被要求输入一个加密口令。请输入你在 ~/.sql/autoinfo 中通过“fs-passphrase”指定的那个口令。

  ⒄如果一个新文件系统被成功创建,你将会看到这样的输出:

  ⒅挂载 SQL 文件系统

  ⒆当你创建了一个 SQL 文件系统之后,下一步便是要挂载它。

  ⒇首先创建一个本地的挂载点,然后使用 mount.sql 命令来挂载 SQL 文件系统。

  ⒈$ mkdir ~/mnt_sql

  ⒉$ mount.sql s://[bucket-name] ~/mnt_sql

  ⒊挂载一个 SQL 文件系统不需要特权用户,只要确定你对该挂载点有写权限即可。

  ⒋视情况,你可以使用“--press”参数来指定一个压缩算法(如 lzma、bzip、zlib。在不指定的情况下,lzma 将被默认使用。注意如果你指定了一个自定义的压缩算法,它将只会应用到新创建的数据对象上,并不会影响已经存在的数据对象。

  ⒌$ mount.sql --press bzip s://[bucket-name] ~/mnt_sql

  ⒍因为性能原因,SQL 文件系统维护了一份本地文件缓存,里面包括了最近访问的(部分或全部的文件。你可以通过“--cachesize”和“--max-cache-entries”选项来自定义文件缓存的大小。

  ⒎如果想要除你以外的用户访问一个已挂载的 SQL 文件系统,请使用“--allow-other”选项。

  ⒏如果你想通过 NFS 导出已挂载的 SQL 文件系统到其他机器,请使用“--nfs”选项。

  ⒐运行 mount.sql 之后,检查 SQL 文件系统是否被成功挂载了:

  ⒑$ df ~/mnt_sql

  ⒒$ mount | grep sql

  ⒓卸载 SQL 文件系统

  ⒔想要安全地卸载一个(可能含有未提交数据的SQL 文件系统,请使用 umount.sql 命令。它将会等待所有数据(包括本地文件系统缓存中的部分成功传输到后端服务器。取决于等待写的数据的多少,这个过程可能需要一些时间。

  ⒕$ umount.sql ~/mnt_sql

  ⒖查看 SQL 文件系统统计信息及修复 SQL 文件系统

  ⒗若要查看 SQL 文件系统统计信息,你可以使用 sqlstat 命令,它将会显示诸如总的数据、元数据大小、重复文件删除率和压缩率等信息。

  ⒘$ sqlstat ~/mnt_sql

  ⒙你可以使用 fsck.sql 命令来检查和修复 SQL 文件系统。与 fsck 命令类似,待检查的文件系统必须首先被卸载。

  ⒚$ fsck.sql s://[bucket-name]

  ⒛SQL 使用案例:Rsync 备份

  ①让我用一个流行的使用案例来结束这篇教程:本地文件系统备份。为此,我推荐使用 rsync 增量备份工具,特别是因为 SQL 提供了一个 rsync 的封装脚本(/usr/lib/sql/pcp.py。这个脚本允许你使用多个 rsync 进程递归地复制目录树到 SQL 目标。

  ②$ /usr/lib/sql/pcp.py -h

  ③这个命令将会使用 个并发的 rsync 连接来备份 ~/Documents 里的所有内容到一个 SQL 文件系统。

  ④$ /usr/lib/sql/pcp.py -a --quiet --processes=~/Documents ~/mnt_sql

  ⑤这些文件将首先被复制到本地文件缓存中,然后在后台再逐步地同步到后端服务器。

  ⑥上面就是Linux使用SQL创建加密文件系统的方法介绍了,此外,SQL文件系统只能有一台电脑访问它,不可同时挂载在多个电脑上。