samba是否需要获取整个文件以确定它的大小?

分享于 

2分钟阅读

互联网

  繁體 雙語

问题:

给定以下配置:

  • 具有samba版本 4.7.6 -ubuntu的服务器
  • 客户端使用 mount -t cifs 安装samba共享

如果在客户端执行 du -h/shared/filename 命令,客户端是否需要从服务器获取整个文件以确定它的文件大小? 那么 du --apparent-size一个简单的ls -lR 操作?


回答 1:

就我所知,du使用stat调用并检索文件元数据以提供文件大小。 除非你使用 -c 标志,否则它并不实际检查文件长度,否则它实际上会计数字节。

因此它不应该获取文件。

ls 执行相同的调用。

du --apparent-size 在检查稀疏区域时应该传输整个文件,例如。


回答 2:

这样的操作肯定是不正确的,不要读这个文件。

duls 都对由 stat() 调用只用( 事实上,最近的ls 使用 lstat(),而 du 使用 fstatat() ) 检索的文件元数据进行操作。 你传递给 du 或者 ls的参数不重要。 这些工具永远不会处理实际的文件数据。

我不知道任何读取实际文件的文件系统 ( 可能会有一些异常,如果引用了带有引线的文件系统 实现) 来检索这里元数据。



文件  sam  尺寸  Fetch  Samba  
相关文章