ls и du не согласны с размером файла на несколько порядков

Кто-нибудь понимает, почему я могу получить эти результаты? Обратите внимание на разницу в размере файла между двумя командами ниже:

$ ls -lh gauss_landmarks_0000.npy -rw-rw-r-- 1 dparks dparks 1.1G Aug 16 12:43 gauss_landmarks_0000.npy $ du -h gauss_landmarks_0000.npy 20M gauss_landmarks_0000.npy 

Это происходит на машине, показанной ниже:

 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.3 LTS Release: 16.04 Codename: xenial 

Результаты на моем собственном ноутбуке linux mint выглядят как и ожидалось:

 $ lsb_release -a No LSB modules are available. Distributor ID: LinuxMint Description: Linux Mint 18.3 Sylvia Release: 18.3 Codename: sylvia 

    One Solution collect form web for “ls и du не согласны с размером файла на несколько порядков”

    Вероятно, это редкий файл. Это означает, что не все блоки размещены, и файл занимает гораздо меньше места, чем предполагает размер файла. При чтении пропущенные блоки будут читаться как ноль.

    Вы также можете использовать опцию -s для ls чтобы увидеть выделенный размер, он должен совпадать с размером, сообщаемым du .

    редактировать

    Если у вас есть файл, который, как вы знаете или подозреваете, содержит много нулевых байтов, но не является разреженным, вы можете использовать cp --sparse=always чтобы сделать его разреженным, что потенциально экономит много дискового пространства.

     cp --sparse=always -p file new_file 
    Linux и Unix - лучшая ОС в мире.