Определите размер резервных копий прошлых 7 дней

Если у Вас есть a /proc файловая система, файл /proc/modules существует, если и только если ядро, если скомпилировано с модулем поддерживает. Если файл существует, но пуст, Ваше ядро поддерживает модули, но ни один не загружается в данный момент. Если файл не существует, Ваше ядро не может загрузить модуль.

Технически возможно иметь поддержку загружаемого модуля без /proc. Можно проверить на присутствие init_module и delete_module системные вызовы в двоичном файле ядра. Это не может быть легко, если у Вас только есть сжатый двоичный файл (например. vmlinuz или uImage). Посмотрите, Как я распаковываю vmlinuz к vmlinux? для vmlinuz. После того как Вам удалось распаковать объем ядра, ищите строку sys_init_module.

Обратите внимание, если модули поддерживаются, необходимость в дополнительных файлах для компиляции собственных модулей так или иначе: заголовки ядрa. Это заголовочные файлы C (*.h), некоторые из которых сгенерированы, когда ядро компилируется (таким образом, Вы не можете только взять их из источника ядра). Посмотрите то, Что ядро получает дерево, содержат? Это связано с заголовками ядрa Linux?

3
28.08.2013, 11:58
3 ответа
find /home/abdul/backup -daystart -name '*.gz' -mtime -7 -exec du -h '{}' ';'

Как это работает:

find - делает то, что это говорит относительно олова; так как Вы не указывали, какую операционную систему Вы используете, я предполагаю здесь, что у Вас есть доступ к GNU, находят.

/home/abdul/backup - начальный каталог

-daystart - времена меры начиная с запуска дня (может или может не быть тем, что Вы хотите),

-name '*.gz' - только рассмотрите файлы с именами, заканчивающимися в .gz (или более точно, соответствуя *.gz)

-mtime -7 - время изменения файла в течение прошлых 7*24 часов, принимая во внимание-daystart

-exec du -h '{}' ';' - выполниться du распечатать размер именованного файла, в человекочитаемых единицах ({} расширяется до рассматриваемого имени файла),

Это перечислит все файлы, которые были изменены за прошлые 7 дней. В зависимости от которого точная ОС и файловая система Вы работаете, могло бы быть возможно основывать проверку на времени создания файла, но многие *отклоняют системы, не отслеживают время, когда файл был первоначально создан или "перенесен".

7
27.01.2020, 21:09
  • 1
    Изменитесь ';' кому: + и добавьте -s опция к du получить общее количество. –  jordanm 17.07.2013, 15:59
  • 2
    @jordanm Это, кажется, не работает на меня; я все еще получаю выполнение списка find ~ -daystart -mtime 7 -exec du -sh '{}' '+'. Я пропускаю что-то? Немного более портативный –  a CVn 17.07.2013, 16:13
  • 3
    Вам также нужно -mtime -7 не так ли? В моей системе, по крайней мере,-mtime 7 будет только соответствовать файлам, измененным точно 7 дней назад. –  terdon♦ 17.07.2013, 16:59
  • 4
    @terdon Ох, правильная, хорошая выгода. Отредактирует, благодарит указать на это. –  a CVn 17.07.2013, 17:03
  • 5
    @jordanm, + передаст столько параметров, сколько это может к синглу du процесс, каждый как отдельный аргумент, который означал du все еще произведет результат для каждого файла. Выполнять сводное использование --files0-from=- -hsc –  Paulo Almeida 17.07.2013, 22:44
find . -ctime -7 | xargs ls -l | awk '{ TOTAL += $5;} END{print TOTAL;}'

Это сначала перечислит файлы меньше чем с 7*24 часами в текущем каталоге, получит их размер в байтах, подведет итог его и предоставит Вам результат.

2
27.01.2020, 21:09
  • 1
    В странице справочника Моей находки говорится -atime должен соответствовать на основе "Файла, был в последний раз получен доступ несколько n*24 часы назад".. Ваш отличающийся? –  a CVn 17.07.2013, 15:14
  • 2
    Действительно, я был немного слишком быстр. это Вы использовать или-ctime или-mtime в зависимости от того, как его решение для резервного копирования работает с вращением/укладкой файла. И он - также не explicitely просьба о сумме размеров. –  mveroone 17.07.2013, 15:20
  • 3

Если Ваши имена файлов не содержат пробелы или другие странные символы, Вы могли бы просто сделать это:

du -sch "$(find /home/abdul/backup -name '*.gz' -mtime +7) "

Для пробелов и других странных символов, используйте это вместо этого:

find /home/abdul/backup -name '*.gz' -mtime -7 -print0 | xargs -0 du -sch

Если у Вас будет много файлов, которые соответствуют Вашим критериям обе из команд выше, то перестанет работать. Первое, потому что список файлов является слишком длинным и вторым потому что xargs разделит на несколько команд и возвратит общее количество для каждого подмножества.

Другое решение, которое избегает этих проблем, (благодаря Paulo Almeida, комментарий которого упомянул это):

find /home/abdul/backup -name '*.gz' -mtime -7 -print0 | du -sch --files0-from -

От man du:

  --files0-from=F
          summarize  disk  usage  of  the NUL-terminated
          file names specified in file F; If F is - then
          read names from standard input
2
27.01.2020, 21:09
  • 1
    Первые сбои на моем $HOME со "Списком аргументов слишком долго" и вторым не производят общее количество. –  Paulo Almeida 17.07.2013, 22:46
  • 2
    @Paolo, да, который произойдет, если будет слишком много файлов. См. обновленный ответ и спасибо за подсказку :). –  terdon♦ 17.07.2013, 23:42

Теги

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