私は次のコマンドを使用しています:
du -sh --apparent-size ./*
du -sh ./*
両方を報告します:
4.0K ./Lightroom_catalog_from_win_backup
432M ./Lightroom catalog - wine_backup
そして、このディレクトリには次のものが含まれます。
$ll ./"Lightroom catalog - wine_backup"
total 432M
-rwxrwx--- 1 gigi gigi 432M Mar 18 2018 Lightroom 5 Catalog Linux.lrcat
-rwxrwx--- 1 gigi gigi 227 Nov 21 2015 zbackup.bat
$ll ./Lightroom_catalog_from_win_backup
total 396M
-rwxrwx--- 3 gigi gigi 396M Dec 17 09:35 Lightroom 5 Catalog Linux.lrcat
-rwxrwx--- 3 gigi gigi 227 Dec 17 09:35 zbackup.bat
du
./Lightroom_catalog_from_win_backup が報告される理由は何4.0K
で、正しく報告するにはどうすればよいですか。
PS:その他のシステム情報:
$stat --file-system $HOME
File: "/home/gigi"
ID: 5b052c62a5a527bb Namelen: 255 Type: ext2/ext3
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 720651086 Free: 155672577 Available: 119098665
Inodes: Total: 183050240 Free: 178896289
$lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.5 LTS
Release: 16.04
Codename: xenial
答え1
ファイルがハードリンクの場合は、以下を再現できます。
~ mkdir foo bar
~ dd if=/dev/urandom of=bar/file1 count=1k bs=1k
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00985276 s, 106 MB/s
~ ln bar/file1 foo/file1
~ du -sh --apparent-size foo bar
1.1M foo
4.0K bar
これは予想される動作です。 ~からGNUdu
ドキュメント:
複数のハードリンクが同じファイルを指している場合、ハードリンクの1つだけが計算されます。ファイルパラメータの順序は計算されるリンクに影響し、パラメータの順序を変更するとduが出力する数値と項目が変更される可能性があります。
重複したサイズのハードリンクが本当に必要な場合は、次の-l
オプションを試してください。
'
-l
'
'すでに(ハードリンクとして)表示されている場合でも、すべてのファイルのサイズを計算します--count-links
。
~ du -sh --apparent-size foo bar -l
1.1M foo
1.1M bar
答え2
3
両方のファイルのリンクLightroom 5 Catalog Linux.lrcat
数をメモしてください。zbackup.bat
Lightroom_catalog_from_win_backup
これは、これら2つのファイルがどこかにある他のファイル(追加の名前を含む)にハードリンクされていることを意味します。du
ディレクトリまたはファイルセットで実行している場合、各ハードリンクは一度だけカウントされます。
例:
$ ls -l
total 41024
-rw-r--r-- 2 kk wheel 10485760 Dec 17 09:07 file1
-rw-r--r-- 2 kk wheel 10485760 Dec 17 09:07 file2
$ du -h file1
10.0M file1
$ du -h file2
10.0M file2
$ du -h .
10.0M .
この動作は、次のために発生します。du
ユーティリティ用POSIX規格:
ファイルオペランドの下で複数回発生し、リンク数が1より大きいファイルは、1つの項目に対してのみ計算および記録する必要があります。
一部のdu
実装には、この動作を無効にする非標準オプションがあります。 GNUの場合、du
これは-l
オプションで行われます。
答え3
ほぼ確実にうまく機能しています。du
各ファイルは、参照数に関係なく一度だけカウントされます。どちらのディレクトリにも同じハードリンクファイルセットが含まれている可能性があります。
GNUのマニュアルページは、この標準最適化を無効にする方法をdu
提供します(実装にこの最適化が含まれていることを確認するを参照)。または、各ディレクトリに対して1回、2回実行します。-l
--count-links
man du
du