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

时间:2019-10-23 08:45:12

标签: c++ linux windows c++14

问题分2步。在C ++ 14(或C)中,在Linux和Windows下。

  1. 是否可以识别(UUID)存储给定URI(文件或目录)的磁盘分区(或docker卷)?

  2. 是否有办法知道2个URI(dirs文件)是否存储在同一磁盘分区(或docker卷)上?

(为避免X Y问题:)的真正目标是能够使用最佳方法移动文件:

  • 如果它们位于相同的分区(或Docker卷)上,则轻移,
  • 内容副本(如果它们位于不同的分区上)。

我有以下曲目:statvfs,GetVolumeInformationByHandleW。

1 个答案:

答案 0 :(得分:0)

幸运的是,这很简单:

#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 */
}