2013-05-25 2 views
2

У меня есть код bash, который moves files and directory to /tmp/rmf rather than deleting them, для целей безопасности.Использование диска в каталоге в Python

Я переношу код на Python, чтобы добавить некоторые функции. Одной из дополнительных функций является проверка доступного размера на /tmp и утверждение, что перемещенный каталог может поместиться в /tmp.

Проверка доступного пространства выполняется с использованием os.statvfs, но как я могу измерить использование диска в перемещенном каталоге?

Я мог либо позвонить du, используя subprocess, либо рекурсивно перебирать дерево каталогов и суммировать размеры каждого файла. Какой подход был бы лучше?

+0

Посмотреть это: http://stackoverflow.com/questions/1392413/calculating-a-directory-size-using-python – Salem

ответ

0

Это должно сделать трюк:

import os 
path = 'THE PATH OF THE DIRECTORY YOU WANT TO FETCH' 
os.statvfs(path) 
+0

Это будет работать только в Linux/Unix: [Доступность: Unix.] (Https://docs.python.org/3/library/os.html) – sm4rk0

+2

statvfs может передавать только FS информацию не только по одному пути – Wang

0

Я думаю, вы можете пересмотреть свою стратегию. Две причины:

  1. Проверка, если вы можете переместить файл, утверждая, вы можете переместить файл, а затем перемещение файла обеспечивает встроенные гонки условие для работы. Большой файл создается в/tmp/после того, как вы его подтвердили, но до того, как вы переместили файл. Doh.

  2. Перемещение файла через файловые системы приведет к огромному количеству накладных расходов. Вот почему на OSX каждый том имеет свой собственный каталог «Корзина». Вместо перемещения блоков, которые составляют файл, вы просто создаете новый индекс, который указывает на существующие данные.

Я бы подумал, как долго файл должен быть доступен, и видимость для пользователей файлов. Если это все автоматизированное вещание, происходящее на бэкэнд - переименование файла, чтобы «скрыть» его от компьютеров и потребителей, в большинстве случаев достаточно просто и имеет дополнительное преимущество от атомной операции)

Иногда сканирует файловую систему для ' старых "файлов, чтобы отбросить их после некоторого льготного периода. Без драмы. Также делает восстановление файлов намного проще, так как это просто переименование для восстановления.