Как проверить использование диска папками, содержащими файлы, на которые ссылаются ссылки, в XFS?

Похоже, вам просто нужен простой Makefile, который знает, как сделать PDF из TeX:

all: $(patsubst %.tex,%.pdf,$(wildcard *.tex))

%.pdf: %.tex
        latexmk -pdfxe $<

.PHONY: all
.DELETE_ON_ERROR:
3
04.01.2021, 16:31
1 ответ

Кажется, должен быть инструмент, который делает это по умолчанию, но я не помню, есть ли он.

Вы можете запрашивать экстенты файлов с помощьюfilefrag(универсального, FIEMAP ioctl )или с помощьюxfs_bmap(специфичного для XFS ). Таким образом, вы можете выбрать подсчет общих экстентов (дубликатов )только один раз (или вообще не подсчитывать ).

# filefrag -e -k testfile
Filesystem type is: 58465342
File size of testfile is 5242880 (5120 blocks of 1024 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..    5119:         96..      5215:   5120:             last,shared,eof
testfile: 1 extent found

В этом примере filefragзнает и показывает, что экстент является общим (в любом месте файловой системы, не обязательно в этом каталоге ),xfs_bmapнет:

# xfs_bmap -l testfile
testfile:
    0: [0..10239]: 192..10431 10240 blocks

Но, по сути, это ключевой ингредиент, который вы можете использовать для самостоятельного написания сценария.

Показать все возможные общие экстенты:

# find. -xdev -type f -exec filefrag -e -k {} + | grep shared
   0:        0..    5119:         96..      5215:   5120:             last,shared,eof
   0:        0..    5119:       5216..     10335:   5120:             last,shared,eof
   0:        0..    5119:         96..      5215:   5120:             last,shared,eof

Общий (дубликат в каталоге )экстентов с использованиемxfs_bmap:

# find. -xdev -type f -exec xfs_bmap -l {} + | grep 'blocks$' | grep -v ': hole' | sort | uniq -d
0: [0..10239]: 192..10431 10240 blocks

Обратите внимание, что xfs_bmapиспользует 512 байт на блок, тогда как filefragиспользует 1024 байта (с параметром -k)или другим размером блока файловой системы (, например 4096 байт ).

Совместно используемые дубликаты экстентов с использованиемfilefrag:

# find. -xdev -type f -exec filefrag -ek {} + | grep shared | sort | uniq -d
   0:        0..    5119:         96..      5215:   5120:             last,shared,eof

Таким образом, в этом случае вам придется вычесть 5120 из результата du -cks..

3
18.03.2021, 22:38

Теги

Похожие вопросы