4

Given the following configuration:

  • server with samba version 4.7.6-ubuntu
  • client mounts a samba share using mount -t cifs

If a du -h /shared/filename command is executed on the client, will the client need to fetch the entire file from the server to determine its file size? What about du --apparent-size? What about a simple ls -lR operation?

Saurabh Nanda
  • 489
  • 1
  • 8
  • 20

2 Answers2

3

As far as I know du uses the stat call and retrieves file metadata to provide file size. It doesn't actually check file length, unless you use the -c flag, then it actually counts bytes.

Therefore it shouldn't fetch the file.

ls does the same stat call.

du --apparent-size should transfer the whole file as it checks for sparse areas and such.

Gothrek
  • 531
  • 2
  • 8
2

Such an operation will most certainly not read the file.

Both du and ls operate on file metadata retrieved by a variant of the stat() call only (in fact recent ls uses lstat() while du uses fstatat()). It doesn't matter what parameters you pass to du or ls. These tools will never handle the actual file-data.

I don't know any filesystem (there may be exceptions when it comes to esoteric filesystem implementations with fuse) that reads the actual file to retrieve this metadata.

Andreas Rogge
  • 2,853
  • 11
  • 24