Вот способ в Perl. Вызовите его так ./script file.ext
:
use warnings;
use strict;
my %data;
my @order;
while (<>){
next if $. == 1;
my @line = split /,/;
if (defined $data{$line[0]}){
$data{$line[0]}->[1] += $line[1];
}
else {
$data{$line[0]} = \@line;
push @order, $line[0];
}
}
for (@order){
print join(',', @{$data{$_}});
}
№
Изменение свойств набора данных, таких как compression
и copies
, влияет только на файлы, записанные после изменения. Чтобы применить такие изменения к существующим файлам, вам нужно скопировать их и перенести поверх оригинала. Это, конечно, разорвет любое соединение с любыми предыдущими снимками с тем же именем файла (, а также с любыми жесткими ссылками на файл, поскольку индексный дескриптор будет другим ).
В качестве альтернативы, чтобы применить такие изменения ко всему пулу или набору данных, вы можете zfs send
сделать моментальный снимок другого пула, (например. резервный пул ), уничтожьте набор данных из исходного пула (или уничтожьте пул и заново -создайте его ), а затем zfs send
обратно. Обратите внимание, что :вы не можете сделать это с опцией zfs send
-R
(--replicate
), потому что это также включает опцию отправки -p
(--props
). См. man zfs
и найдите zfs send
для более подробной информации.
zfs scrub
проверяет существующие данные в пуле и перезаписывает любые поврежденные копии, если имеется достаточная избыточность, чтобы иметь хорошую копию, соответствующую контрольной сумме... если нет, он просто предупреждает об исправимой ошибке -.