【发布时间】:2022-12-07 09:32:25
【问题描述】:
我正在使用 brtfs,我希望我的 Java 程序以写时复制的方式复制一组大文件。
换句话说,在某个希望存在并且有人听说过的库中,cp --reflink=auto 的等价物是什么,所以他们可以告诉我? :-)
【问题讨论】:
标签: java linux copy-on-write
我正在使用 brtfs,我希望我的 Java 程序以写时复制的方式复制一组大文件。
换句话说,在某个希望存在并且有人听说过的库中,cp --reflink=auto 的等价物是什么,所以他们可以告诉我? :-)
【问题讨论】:
标签: java linux copy-on-write
据我所知,没有特定于 Java 的 API,因为这是一个相当特定的、依赖于操作系统和文件系统的特性。但是,在可以发出 ioctls 的库的帮助下(例如 this one,我与它没有任何关系并通过谷歌搜索找到),您可以发出 ficlonerange ioctl。
要调用它,您需要将一个结构放在一起:
struct file_clone_range {
__s64 src_fd;
__u64 src_offset;
__u64 src_length;
__u64 dest_offset;
};
这在 Java 中有点迂回,但作为示例,您应该能够使用链接库按如下方式执行此操作:
Native.getDirectBufferPointer如果这看起来太脆弱,请考虑编写调用 ioctl 并具有更方便的 API 的 C 或 C++ 库,然后通过 JNI 调用它。
【讨论】: