Я не согласен с рекомендациями squashfs. Обычно вы не записываете squashfs на устройство с необработанными блоками; думайте о нем как о легко читаемом tar-архиве. Это означает, что вам все равно понадобится подложка для файловой системы.
ext2
имеет ряд серьезных ограничений, которые ограничивают ее полезность сегодня; поэтому я бы рекомендовал ext4
. Поскольку она предназначена для архивирования, вы будете создавать на ней сжатые архивы; это означает, что у вас будет небольшое количество довольно больших файлов, которые редко меняются. Вы можете оптимизировать это:
-I 128
, чтобы уменьшить размер отдельных inode, что уменьшит размер таблицы inode. -i
, чтобы еще больше уменьшить размер таблицы inode. Если вы увеличите это значение, будет создано меньше inodes, и, следовательно, таблица inode также будет меньше. Однако это означает, что файловая система в среднем тратит больше места на файл. Поэтому это своего рода компромисс. -O ^has_journal
. Однако, если вы пойдете этим путем, я рекомендую установить опции по умолчанию для монтирования файловой системы только для чтения; вы можете сделать это в fstab
, или вы можете использовать tune2fs -E mount_opts=ro
для записи значения по умолчанию в файловой системе (вы не можете сделать это во время mkfs
)-m
в mkfs
или tune2fs
. Это устанавливает процент (по умолчанию он равен 5), который зарезервирован только для root only. Не устанавливайте его на ноль; файловой системе требуется некоторое пространство для эффективной работы. Предположим, что ни одно из полей не содержит кавычек:
awk -F, 'NF == 7' file
awk -F, 'NF != 7' file # show the "bad lines"
Это печатает любую строку ровно с 7 полями, разделенными запятыми -.
Если это правильный CSV-файл (, где поля в кавычках могут содержать разделитель полей ), вам понадобится анализатор CSV. Мне нравится рубин для одного -вкладыша:
ruby -rcsv -pe 'next unless CSV.parse_line($_).length == 7' test.csv
ruby -rcsv -pe 'next if CSV.parse_line($_).length == 7' test.csv # show the "bad"
Регулярные выражения могут предоставлять элегантные решения, но не здесь, IMO
grep -E '^([^,]+,){6}[^,]+$' test.csv
grep -vE '^([^,]+,){6}[^,]+$' test.csv # show the "bad" lines