Расширенные операторы glob оболочки bash могут делать отрицание шаблона, например. [
]
$ rm -rf !(*foo*)
удаляет (рекурсивно) все каталоги верхнего уровня, не содержащие строку foo, оставляя [ ! d3]
$ tree
.
└── subdirfoo
├── other file
└── somefile
1 directory, 2 files
Однако это также удалит любой расширенный glob с именами, не содержащими foo на верхнем уровне. AFAIK bash extended globs не может отличить файлы от каталогов, но zsh предоставляет квалификаторы glob, которые позволяют это, например, [ ] , затем в zsh , тогда как добавление классификатора каталога (/) , поэтому удаляет только квалификаторы glob , имена которых не содержат строку foo, оставляя простые файлы неповрежденными. % tree
.
├── foofile
├── other file
├── somefile
├── subdir
│ ├── other file
│ └── somefile
├── subdirbar
│ ├── other file
│ └── somefile
├── subdirbaz
│ ├── other file
│ └── somefile
└── subdirfoo
├── other file
└── somefile
4 directories, 11 files
% setopt EXTENDED_GLOB
% ls -d (^(*foo*))
other file somefile subdir subdirbar subdirbaz
% ls -d (^(*foo*))(/)
subdir subdirbar subdirbaz
% tree
.
├── foofile
├── other file
├── somefile
└── subdirfoo
├── other file
└── somefile
1 directory, 5 files
Я предполагаю, что вы фактически не используете ext2, а ext3 или ext4. Оба они неплохо избегают фрагментации, особенно ext4. В результате вы почти наверняка не заметите разницы после запуска e2defrag. Сколько времени это займет; что полностью зависит от того, сколько данных он должен переместить. При первом запуске это может занять некоторое время, но последующие прогоны должны быть очень быстрыми. Это, пожалуй, один из самых быстрых алгоритмов дефрагментации, хотя и небезопасный; если он прерывается посередине, вы можете поцеловать свою файловую систему.
Каковы ваши показатели чтения / записи? Сколько вы хотите увеличить? Вероятно, вы не получите , что значительно увеличит количество дефрагментации.
Время, необходимое для дефрагментации ваших данных, будет в значительной степени зависеть от скорости фрагментации, количества файлов и скорость чтения / записи вашего диска и другие коэффициенты скорости вашего оборудования. 8h должно быть достаточно, но я могу только догадываться.
Фрагментация - это всегда проблема, но ext2 / 3/4 зарезервировать некоторое пространство, чтобы убедиться, что они способны записывать данные за один раз, а не всегда разбросайте по нему. Вы можете проверить, сколько места зарезервировано с помощью tune2fs -l /dev/<your device> | grep -i reserve
. Уменьшение зарезервированной суммы, скорее всего, приведет к фрагментации с течением времени, в то время как увеличение зарезервированной суммы, скорее всего, не поможет еще больше уменьшить фрагментацию.
Если вам нужно увеличить чтение / запись, возможно, работа над ramdrive поможет сценарии, в которых у вас слишком много данных, но много мелких файлов. Также вы можете проверить SSD-файлы, чтобы увеличить ваш r / w.
Также ссылаются на этот ответ для информации о фрагментации.