'du -sh' e 'du -sb' dão resultados diferentes quando o arquivo está sendo acessado?

0

Eu configurei um servidor de arquivos com o samba e estou copiando arquivos para ele de outro computador na mesma LAN. Eu configuro o servidor SSH e conecto a ele com meu telefone para monitorar o processo.

Isso é o que eu executo no meu telefone no cliente OpenSSH (o servidor tem o GNU Core Utilities instalado):

# while :; do du -sh /media/samba; sleep 1; done
288M    /media/samba
289M    /media/samba
290M    /media/samba
...
^C
# while :; do du -sb /media/samba; sleep 1; done
328267292       /media/samba
328267292       /media/samba
328267292       /media/samba
... ...
(repeated ~30 times)
361334588       /media/samba
361334588       /media/samba
... ...
(repeated ~30 times)
403280532       /media/samba
403280532       /media/samba
^C
#

O computador (executando o Windows 10) informa uma velocidade de transferência de aprox. 1000KB / se todos os arquivos têm 30 ~ 35 MB de tamanho.

Da minha observação, du está reportando tamanho de arquivo com -h , mas "espaço ocupado" com -b .

Então, por que du informa tamanhos diferentes quando um arquivo está crescendo?
Como o du processa as opções -h e -b ?

    
por iBug 08.07.2017 / 17:56

1 resposta

0

A diferença é a bandeira

-h é para saída legível que vai usar megabytes -b está usando bytes. E é claro que -s é para resumir

Da página do du man

-b --bytes Print sizes in bytes, overriding the default block size (*note Block size::).

-h --human-readable Append a size letter such as 'M' for megabytes to each size. Powers of 1024 are used, not 1000; 'M' stands for 1,048,576 bytes. Use the '-H' or '--si' option if you prefer powers of 1000.

-s --summarize Display only a total for each argument.

Então, em sua primeira chamada, du -sh é resumir o total em um formato legível usando megabytes ao poder de 1024.

Na sua segunda chamada, du -sb está resumindo o argumento usando bytes.

    
por 08.07.2017 / 18:55