Directory
我不明白“ls”命令是如何工作的
我想檢查
pg_backup
文件夾的大小,所以我使用了這個命令:[postgres@server02 ~]$ pwd /var/lib/pgsql [postgres@server02 ~]$ ls -lh total 4.0K drwxr-x---. 7 postgres postgres 86 Oct 6 22:00 pg_backup
如上面的輸出所示,大小為 86 字節。
但是,
pg_backup
目錄本身包含其他幾個目錄:[postgres@server02 ~]$ ls -lh pg_backup total 0 drwxr-xr-x. 3 postgres postgres 121 Oct 2 23:00 20211002 drwxr-xr-x. 2 postgres postgres 109 Oct 3 22:00 20211003 drwxr-xr-x. 2 postgres postgres 109 Oct 4 22:00 20211004 drwxr-xr-x. 2 postgres postgres 109 Oct 5 22:00 20211005 drwxr-xr-x. 2 postgres postgres 109 Oct 6 22:00 20211006 [postgres@server02 ~]$
然後這些子目錄之一包含一些大文件:
[postgres@server02 ~]$ ls -lh pg_backup/20211006 total 23G -rw-r--r--. 1 postgres postgres 23G Oct 6 23:21 file.dump -rw-r--r--. 1 postgres postgres 418K Oct 6 22:00 backup_dba.dump -rw-r--r--. 1 postgres postgres 1.4K Oct 6 22:00 backup_postgres.dump -rw-r--r--. 1 postgres postgres 830 Oct 6 22:00 backup_dwh.dump
如果實際上該目錄包含許多較大的子目錄,而這些子目錄又包含可能達到 23GB 大小的文件,我很困惑為什麼該
ls -lh
命令僅顯示86 字節的大小?pg_backup
為什麼所有子目錄中文件的總和pg_backup
沒有反映在初始ls -lh
命令中?
ls
顯示文件佔用的大小。如果我們將事情簡化,類 Unix 系統中的很多東西看起來像文件。有些是文件文件,有些是套接字文件,有些是符號連結文件,有些是目錄文件等。ls
輸出中顯示的大小是該對象消耗的大小。但它沒有考慮目標所指對象的大小。你正在尋找
du -h -d 0 <directory>
命令。並且它向您展示的尺寸
ls
- 好吧,不是它。它會變得更大,是的,因為目錄將包含更多的孩子,但這兩種大小衡量不同的東西。