Я попытался экспортировать коллекцию через упаковщик dspace, но это привело меня к исключению java:
Исключение: java.io.FileNotFoundException: / home / dspace / dspace / assetstore / 24/53/70/24537062703407880406826961992454636643 (такого файла или каталога нет)
Я хочу найти (и, возможно, очистить) все эти ссылки между элементами и отсутствующими файлами в хранилище ресурсов. Может кто-нибудь дать мне совет. Спасибо.
Ведь мне удалось решить проблему. Возможно, это может быть даже лучше, но вот как я решил это: мы экспортировали в текстовый файл (internal_id.txt) пути всех битовых потоков, используя следующий запрос:
выберите подстроку (b.internal_id для 2) || '/' || подстрока (b.internal_id от 3 до 2) || '/' || подстрока (b.internal_id из 5 вместо 2) || '/' || b.internal_id как bitstream_path из битового потока b
После этого я проверил наличие этих bistreams в магазине ресурсов с помощью этого небольшого скрипта:
#!/bin/sh
homedspace=/home/dspace
assetd=$homedspace/assetstore
for i in `cat $homedspace/internal_id.txt`;
do
bitstr="$assetd/$i"
if [ ! -f $fbitstr ]; then
echo "$i"
fi;
done
Чтобы получить подробную информацию о записях, в которых отсутствуют битовые потоки, я использовал следующий запрос
select
ob.uuid
,h.handle
,i.item_id
,bfr.short_description
,mv.text_value
,substring(b.internal_id for 2) || '/' || substring(b.internal_id from 3 for 2) || '/' || substring(b.internal_id from 5 for 2) || '/' || b.internal_id as bitstream_path
from
dspaceobject ob
left join handle h on
ob.uuid = h.resource_id
left join item i on
i.uuid = ob.uuid
left join bitstream b on
b.uuid = ob.uuid
left join bitstreamformatregistry bfr on
bfr.bitstream_format_id = b.bitstream_format_id
join metadatavalue mv on
mv.dspace_object_id = ob.uuid
and b.internal_id in
('114010604776142507469236848335815822008',
'144380007015254523440612284014079661640',
'72819755632666247567002874213191474609')
order by b.internal_id
Надеюсь, это может кому-нибудь помочь ...