分两步提问。在C++14(或C(中,在Linux和Windows下。
-
有没有一种方法可以识别(UUID(存储给定URI(文件或目录(的磁盘分区(或docker卷(?
-
有没有办法知道两个URI(目录的文件(是否存储在同一个磁盘分区(或docker卷(上?
(为了避免XY问题:(真正的目标是能够使用最佳方法移动文件:
- 如果它们在同一分区(或Docker卷(上,则轻移动
- 内容复制(如果它们位于不同的分区上(
我有这样的音轨:statvfs,GetVolumeInformationByHandleW。
幸运的是,这很简单:
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
struct stat A, B;
stat( "/etc/fstab", &A );
stat( "/boot/grub2/grub.cfg", &B );
if( A.st_dev == B.st_dev ) {
/* Files are on same device, shallow processing is OK */
} else {
/* Files are on different devices, bytes gotta be moved */
}