GERENCIAR PACOTES BAGIT
CRIAR PACOTES BAGITS POR DATASETS
sudo su - glassfish
curl -H X-Dataverse-key:$API_TOKEN http://localhost:8080/api/datasets/:persistentId/?persistentId=doi:10.48331/SCIELODATA.RJ1HZO
export ID=19300
export API_TOKEN='YOUR API TOKEN'
curl -X POST -H "X-Dataverse-key: $API_TOKEN" http://localhost:8080/api/admin/submitDatasetVersionToArchive/$ID/1.0
CRIAR PACOTES BAGITS DE TODOS OS DATASETS
Essa execução é feito uma vez por mês. Os pacotes bagits são gerados no diretório /preservacao/dataverse que é um ponto de montagem nfs em storage-scielo-232.scielo.org:/archivematica_transfersource
export API_TOKEN='MEU TOKEN'
curl -X POST -H "X-Dataverse-key: $API_TOKEN" 'http://localhost:8080/api/admin/archiveAllUnarchivedDatasetVersions'
Uma vez que os pacotes são gerados precisamos organizar cada um dos datasets em pastas individuais. Para isso precisamos executar o script normalizar.sh que irá criar apenas as pastas
cd /preservacao/dataverse
sh -x normalizar.sh
Uma vez criadas as pastas, precisamos mover os arquivos zip e xml correspondentes de cada datasets para a sua respectiva pasta.
cd /preservacao/dataverse
sh -x organizar-arquivos.sh
Pode ser que o mês tenha muitos arquivos e que represente muito gigabyte como foi o caso de agosto de 2025 que chegou a 29Gb. Precisamos dividir elas em tamanho de 1GB. Foi criado um script chamado separador-pasta.sh
#!/bin/bash
# Diretório de origem
ORIGEM="/preservacao/dataverse/scielodata-agosto-2025"
# Prefixo das novas pastas
PREFIXO="scielodata-agosto-2025"
cd "$ORIGEM" || exit 1
i=1
total=0
destino=$(printf "%s-%02d" "$PREFIXO" "$i")
mkdir -p "$destino"
# Lista subpastas com tamanho em KB (para somar fácil)
du -sk * | sort -n | while read -r size name; do
# Se passar de 1GB (1048576 KB), cria nova pasta
if (( total + size > 1048576 )); then
i=$((i+1))
total=0
destino=$(printf "%s-%02d" "$PREFIXO" "$i")
mkdir -p "$destino"
fi
echo "Movendo $name para $destino (tamanho: $size KB)"
mv "$name" "$destino/"
total=$((total + size))
done
veja que neste exemplo as variáveis abaixo precisam ser ajustas para o mês que você precisa trabalhar:
ORIGEM="/preservacao/dataverse/scielodata-agosto-2025"
PREFIXO="scielodata-agosto-2025"
TROUBLESHOOTING
Version was already submitted for archiving.
Quando você envia para criar o pacote em uma data versão, não é possível criar o mesmo sem uma intervenção. O erro que dá é:
{"status":"ERROR","message":"Version was already submitted for archiving."}
Para enviar novamente siga os passos:
sudo su - postgres
\c dvndb
SELECT
id, versionnumber, minorversionnumber, versionstate,
archivetime, archivalcopylocation, externalstatuslabel, archivenote
FROM datasetversion
WHERE dataset_id = '13150'
ORDER BY versionnumber DESC, minorversionnumber DESC;
Veja que o resultado foi:
Vamos agora atualizar o registro para limpar esta mensagem:
UPDATE datasetversion
SET archivetime = NULL,
archivalcopylocation = NULL,
externalstatuslabel = NULL,
archivenote = NULL
WHERE id = 2209;
Resultado:
Agora vamos executar novamente o comando:
sudo su - glassfish
export ID=13150
export API_TOKEN='minha api'
curl -X POST -H "X-Dataverse-key: $API_TOKEN" http://localhost:8080/api/admin/submitDatasetVersionToArchive/$ID/1.0
Outra forma para limpar é:
export API_TOKEN=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
export SERVER_URL=https://demo.dataverse.org
export PERSISTENT_IDENTIFIER=doi:10.5072/FK2/7U7YBV
export VERSION=1.0
curl -H "X-Dataverse-key: $API_TOKEN" -X DELETE "$SERVER_URL/api/datasets/:persistentId/$VERSION/archivalStatus?persistentId=$PERSISTENT_IDENTIFIER"
No comments to display
No comments to display