如何确定2个URI(路径)是否属于同一分区或卷



分两步提问。在C++14(或C(中,在Linux和Windows下。

  1. 有没有一种方法可以识别(UUID(存储给定URI(文件或目录(的磁盘分区(或docker卷(?

  2. 有没有办法知道两个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 */
}

最新更新