V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
baskice
V2EX  ›  问与答

aria2 能在 Windows 分配的 NTFS 下以 falloc 模式工作吗?

  •  
  •   baskice · 2018-10-24 06:05:28 +08:00 · 3674 次点击
    这是一个创建于 2241 天前的主题,其中的信息可能已经有所发展或是发生改变。
    https://aria2.github.io/manual/en/html/aria2c.html#cmdoption-file-allocation

    这个说明里--file-allocation=<METHOD>一项写着:

    NTFS(MinGW build only), falloc is your best choice.

    那么 windows 格式化出来的 NTFS,不是这个 MinGW。就不能用 falloc 模式了吗?

    falloc 会覆盖有用数据吗?
    9 条回复    2020-01-18 12:57:15 +08:00
    baskice
        1
    baskice  
    OP
       2018-10-24 06:08:22 +08:00
    设置 falloc 模式时会有提示
    file-allocation=falloc will use SetFileValidData() API, and aria2 uses uninitialized disk space which may contain confidential data as the download file space. If it is undesirable, --file-allocation=prealloc is slower, but safer option.

    这里的 confidential data 指的是?
    msg7086
        2
    msg7086  
       2018-10-24 06:27:48 +08:00   ❤️ 1
    ……什么叫 NTFS 不是 MinGW ?
    MinGW 是编译 Aria2 的工具链,你的 Aria2 正常情况下都是 MinGW 编译出来的。
    NTFS 是谁格式化出来的有什么关系?

    falloc 是预分配,和覆盖数据有什么关系?

    SetFileValidData 是直接分配数据而不清零,如果你之前删除过数据,直接预分配不清零的话会把原来你删除过的数据一起分配进来。具体有多少敏感数据应该要问你删过哪些数据。
    liwufan
        3
    liwufan  
       2018-10-24 06:41:13 +08:00
    什么是“ SetFileValidData() API ”?你的系统支持 posix 吗? falloc may not be available if your system doesn't have
    posix_fallocate(3) function.
    xenme
        4
    xenme  
       2018-10-24 06:42:34 +08:00 via iPhone   ❤️ 2
    https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-setfilevaliddata

    The SetFileValidData function allows you to avoid filling data with zeros when writing nonsequentially to a file. The function makes the data in the file valid without writing to the file. As a result, although some performance gain may be realized, existing data on disk from previously existing files can inadvertently become available to unintended readers. The following paragraphs provide a more detailed description of this potential security and privacy issue.
    A caller must have the SE_MANAGE_VOLUME_NAME privilege enabled when opening a file initially. Applications should call SetFileValidData only on files that restrict access to those entities that have SE_MANAGE_VOLUME_NAME access.

    其实就是默认只允许具有特定权限的应用调用,调用后果是分配磁盘但是不初始化,所以磁盘上之前的数据如果去读区的话,可能会出现安全问题,比如如果那片空间如果保存过密码啥的。但你信任 arial2,所以其实没啥问题。
    xenme
        5
    xenme  
       2018-10-24 06:45:14 +08:00 via iPhone
    另外覆盖的肯定是以前可能用过,但是现在没用的,没有填充过零的硬盘簇,所以才能可能看到这里以前保存过什么数据,所以才有风险,不过就你的场景,没啥好担心的
    ysc3839
        6
    ysc3839  
       2018-10-24 08:34:43 +08:00 via Android
    调用 SetFileValidData 需要一个权限,而默认情况下管理员才有这个权限。不过你可以调整拥有此权限的用户。
    下载 BT 的时候开启了这个选项,曾经遇到过 Windows Defender 报毒,大概是检测到残留数据中的病毒吧?
    ysc3839
        7
    ysc3839  
       2018-10-24 08:37:47 +08:00 via Android   ❤️ 1
    可以按照这篇文章配置 https://www.cnblogs.com/gaizai/p/3516905.html
    只需要配置“执行卷维护任务”那里就行了,加上你自己的用户名,后面那些不需要动。
    ysc3839
        8
    ysc3839  
       2018-10-24 08:45:11 +08:00 via Android
    @ysc3839 配置后要注销再登录才生效。
    cz5424
        9
    cz5424  
       2020-01-18 12:57:15 +08:00
    Aria2 有可能不是 MinGW 编译出来的,例如我 nas 挂载了 ntfs 磁盘。然后就 gg 了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5067 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 08:45 · PVG 16:45 · LAX 00:45 · JFK 03:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.