Hot restore file storage seaweedfs
#!/bin/bash
# TheHive attachment variables
SEAWEEDFS_ARCHIVE_PATH=/mnt/backup/seaweedfs/
# SeaweedFS variables
SEAWEEDFS_BUCKET="thehive"
SEAWEEDFS_ALIAS=th_seaweedfs
# Check if SeaweedFS is accessible
if ! mcli ls ${SEAWEEDFS_ALIAS} > /dev/null 2>&1; then
echo "Error: Cannot connect to SeaweedFS server"
exit 1
fi
# Look for the latest backup snapshot in SeaweedFS
SEAWEEDFS_BACKUP_LIST=(${SEAWEEDFS_ARCHIVE_PATH}/seaweedfs_????????_??h??m??s.tar)
SEAWEEDFS_LATEST_BACKUP_NAME=$(basename ${SEAWEEDFS_BACKUP_LIST[-1]})
if [ -z "${SEAWEEDFS_LATEST_BACKUP_NAME}" ]; then
echo "Error: No backup snapshots found in ${SEAWEEDFS_ARCHIVE_PATH}"
exit 1
fi
echo "Latest attachment files backup snapshot found is ${SEAWEEDFS_ARCHIVE_PATH}/${SEAWEEDFS_LATEST_BACKUP_NAME}"
tar xvf "${SEAWEEDFS_ARCHIVE_PATH}/${SEAWEEDFS_LATEST_BACKUP_NAME}" -C ${SEAWEEDFS_ARCHIVE_PATH} > /dev/null
if [ ! -d "${SEAWEEDFS_ARCHIVE_PATH}/${SEAWEEDFS_LATEST_BACKUP_NAME%.tar}" ]; then
echo "Error: Extracted folder not found"
exit 1
fi
echo "Latest SeaweedFS backup archive extracted in ${SEAWEEDFS_ARCHIVE_PATH}/${SEAWEEDFS_LATEST_BACKUP_NAME%.tar}"
# Restore attachments from SeaweedFS
echo "Restoring attachments from SeaweedFS snapshot ${SEAWEEDFS_LATEST_BACKUP_NAME}..."
mcli mirror ${SEAWEEDFS_ARCHIVE_PATH}/${SEAWEEDFS_LATEST_BACKUP_NAME%.tar} ${SEAWEEDFS_ALIAS}/${SEAWEEDFS_BUCKET}/
# Clean up extracted folder
rm -rf "${SEAWEEDFS_ARCHIVE_PATH}/${SEAWEEDFS_LATEST_BACKUP_NAME%.tar}"
# Display completion message
echo ""
echo "Attachment files data restoration done!"
echo "Restored from: ${SEAWEEDFS_ARCHIVE_PATH}/${SEAWEEDFS_LATEST_BACKUP_NAME}"