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?
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.Such an operation will most certainly not read the file.
Both
du
andls
operate on file metadata retrieved by a variant of the stat() call only (in fact recentls
useslstat()
whiledu
usesfstatat()
). It doesn't matter what parameters you pass todu
orls
. 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.