Перед записью программы проверяют, совпадает ли новый вывод со старым?Если нет, то кажется, что символические ссылки не дадут какого-либо преимущества, поскольку хранилище данных всегда будет уникальным в ходе выполнения анализа.
Вы можете изменить способ, которым программы записывают свой вывод?Следующая последовательность не будет следовать по символической ссылке:
- записать новый вывод в
out.tmp
- , если старый вывод
out
и out.tmp
идентичны, удалить out.tmp
- в противном случае переместите
out.tmp
поверх out
Насколько велики данные?Достаточно ли он большой, чтобы стоить усилий по оптимизации требований к хранилищу?Вы всегда можете сохранить полный вывод и выполнить некоторый анализ (в простейшем случае, diff
) после факта, чтобы увидеть, совпадают ли данные.
Если данных много, вы можетеВы хотите обратиться к файловой системе, которая будет оптимизировать дубликаты данных для вас (функция известна как "дедупликация").Или вы можете использовать Поддержка снимков LVM , которая позволяет делать дешевые копии файлов при записи файловой системы.
В качестве дедуплицирующей файловой системы бедного человека вы можете сделать что-то вродеэто в bash:
for file in $output_files; do
md5=`md5sum $file | awk '{print $1}'`
if [ ! -f "db/$md5" ]; then
mv $file db/$md5
fi
ln -sf db/$md5 $file
done