#unix #filesystem #encryption #extension

fsextra

fsextra 是一组扩展,旨在简化与基于 Unix 的文件系统的交互。它支持加密操作(加密、散列)

5 个不稳定版本

0.3.0-alpha.12021 年 9 月 27 日
0.2.1 2021 年 9 月 25 日
0.1.0 2021 年 9 月 25 日
0.0.1 2021 年 9 月 25 日

#333操作系统

28 每月下载次数

MIT 许可证

20KB
213

fsextra

注意: 此库未经过外部安全测试,使用风险自担。

Build Status

fsextra 是一组扩展,旨在简化与基于 Unix 的文件系统的交互。此库通过启用 crypto 功能(> v0.2.0)支持文件和目录上的加密操作。

安装

通过更新您的 Cargo.toml 文件以包含 fsextra = "*" 来安装默认功能。

# your Cargo.toml
[package]
name = "your-package"
version = "0.1.0"
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.net.cn/cargo/reference/manifest.html

[dependencies]
fsextra = "*"

# optionally enable `crypto` feature
fsextra = { version = "*", features = ["crypto"] }

已知限制

  • MetadataExtendedFileExtended(及其实现)仅在基于 Unix 的文件系统上进行了测试/支持(尽管可能可行)。

依赖关系

  • 如果启用了 crypto 功能,则此库需要 ring@0.16.20

兼容性

此库支持基于 Unix 的操作系统,并且目前尚未对其他操作系统进行测试(v0.3.0)。从 v0.3.0 开始,任何特定于 OS 的功能都隐藏在 cfg 属性之后。从 v0.3.0-alpha.1 开始,更新已在 Unix(Linux)和 Windows 操作系统上进行测试。

  • v0.3.00-alpha.1(及以后版本)针对Windows操作系统进行测试。
  • v0.3.00(及以后版本)引入了一个新的接口:Digest,要求将DigestExtSha2Sha5移动到legacy。在更新到v0.3.00时可能需要代码更改。
  • v0.2.0(及更早版本)可能编译成适用于其他操作系统的版本,然而这可能会导致未定义的结果或失败。

基本用法

关于完整的示例,请参阅我们的文档

use fsextra::extensions::{MetadataExtended, FileExtended};
use fsextra::crypto::digest::{Digest, DigestAlgorithm};
use std::fs::File;
use std::io::{Write, Result};

fn main() -> Result<()> {
    let file = File::open("path/to/executable")?;
    let metadata = file.metadata()?;
    
    if !metadata.is_executable() {
        let digest = file.digest(DigestAlgorithm::Sha2);
        assert_eq!(hex::encode(digest), "7509e5bda0c762d2bac7f90d758b5b2263fa01ccbc542ab5e3df163be08e6ca9");
    }

    Ok(())
}

测试

跨目标

  • x86_64-pc-windows-gnu
  • x86_64-unknown-linux-gnu
  • arm-unknown-linux-gnueabi

可以使用Cargo(与往常一样)通过cargo test测试此库。建议同时进行带有和没有--all-features的测试。在本地测试时,建议使用Cross来对上述目标进行测试。

要使用Cross进行测试:cross test --target {target} --all-features

了解更多

依赖关系

~0–3MB
~74K SLoC