В принципе, это просто :просто скажите find
запускать du
сразу несколько файлов. find. -type f -mtime +60 -exec du -smc {} +
К сожалению, это не работает надежно, потому что -exec … {} +
может выполнять команду несколько раз, она только пытается сгруппировать аргументы и не может сгруппировать все аргументы, если их общая длина превысит ограничение длины командной строки системы. И на самом деле BusyBox find (по крайней мере версия, которую я тестировал только что )вообще не пытается группировать:-exec … {} +
обрабатывает один аргумент за раз, строка -exec … {} \;
. Невозможно быть уверенным, что получится только одна строка total
.
GNU du
можно указать читать произвольно длинный список имен файлов с помощью --files0-from
, но другие версии du
, в частности версия BusyBox, могут брать имена файлов только из командной строки.
Таким образом, если вы не можете предположить, что у вас есть GNU du
, нет способа избежать многократного запуска du
, а это означает, что вам нужен другой инструмент для суммирования, что, в свою очередь, требует, чтобы du
не округляет размеры. Суммирование с помощью awk простое, если вывод du
поддается разбору.
Если вы можете предположить, что в именах файлов нет символов новой строки, или вы согласны с исключением путей, содержащих символы новой строки, вывод du
легко разобрать :только по одному файлу на строку.
newline='
'
find. ! -path "*${newline}*" -type f -mtime +60 -exec du -k {} + |
awk '{kB += $1} END {printf "%d MB\n", (kB + 512) / 1024}'
Вместо этого следует использовать адаптер host -only и сопоставить его с гостевым интерфейсом.
Вы должны создать новый адаптер в настройках виртуальной машины, а затем сопоставить сетевой адаптер с этим адаптером в настройках гостевой виртуальной машины.