Мне нужно найти самые старые файлы с соответствующими каталогами в файловой системе объемом 90 ТБ до 50 ТБ, а затем переместить их в другую файловую систему. Они должны сохранять свою структуру каталогов, так как именно это определяет файлы. Так -
первый уровень / второй уровень / третий уровень / (файл)
это структура. Мне нужно переместить всю эту структуру - в каталогах верхнего уровня ничего нет, но без них я не могу определить, к какому файлу относится, так как все файлы, которые я ищу, имеют одинаковые имена. Когда процесс будет завершен, у меня должно остаться примерно 40 ТБ в исходной файловой системе и почти ничего в новой файловой системе не останется, поскольку самые старые файлы в оригинале уже есть.
Спасибо!
total_size > max { exit 0 }
к сценарию awk)50 * 2^40
). Вы также можете изменить его,total_size += $2 + overhead
гдеoverhead
он определяется как издержки, связанные с этими папками. Смотрите также%k
вместо того,%s
чтобы получить использование диска в КиБ.Команда 'ls' несколько креативна с временными метками, поэтому их анализ может быть болезненным. Вероятно, было бы намного проще реализовать это на языке, который реализует stat (). В некоторых версиях Unix есть статистика командной строки - в соседнем окне RH:
Но это будет работать как собака с большим количеством файлов.
Документация для GNU awk включает в себя пример расширения, предоставляющего функции файловой системы, но вам нужно будет поработать, чтобы создать и поддерживать его.
Написание программы с нуля на PHP, C или Perl (или go, ruby или многих других языках) будет простым, но выходит за рамки поста здесь.
источник
stat
был добавлен задолго после того, как у GNUfind
была-printf
команда (которая может делать то же самое, что и GNUstat
с гораздо лучшим интерфейсом).