Files
如何獲得忽略硬連結的文件夾大小?
我使用 rsnapshot 進行備份,它會生成一系列包含同名文件的文件夾。一些文件是硬連結的,而另一些文件是獨立的。例如,
hourly.1/file1
和hourly.2/file1
可能硬連結到同一個文件,而hourly.1/file2
和hourly.2/file2
是完全獨立的文件。我想查找文件夾使用的空間量,
hourly.2
忽略任何硬連結到hourly.1
. 所以在上面的例子中,我想得到file2的大小,但忽略file1。我在 linux 上使用 bash,我想盡可能簡單地從命令行執行此操作,所以請不要使用大的圖形或僅其他作業系統的解決方案。
hourly.2
如果您特別想要在下面但不在下面的文件的大小hourly.1
,您可以使用du
. 如果du
多次處理同一個文件(即使使用不同的名稱,即硬連結),它只計算第一次的文件。所以du hourly.1 hourly.2
報告的hourly.2
是你正在尋找的大小。因此:du -ks hourly.1 hourly.2 | sed -n '2s/[^0-9]*//p'
(適用於任何 POSIX 系統和大多數其他 Unix 變體。假設目錄名稱
hourly.1
不包含任何換行符。)
正如@Gilles 所說,由於
du
只計算指向它遇到的同一 inode 的所有硬連結中的第一個,因此您可以連續給它目錄:$ du -hc --max-depth=0 dirA dirB 29G /hourly.1 1G /hourly.2 30G total
即,‘hourly.2’ 中的任何文件引用已經在’hourly.1’ 中引用的inode(又名“真實”文件),將不被計算在內。