Backup and restore from prod to other environments
Run these commands wherever production is running.
export WHERE="/" export DB_NAME="visna_db_new" export BACKUP="${DB_NAME}_backup.tar.gz" export SSH_USER="marco" export TARGET="192.168.40.60" export RETRIEVERS="retrievers_20250730014908.pkl" # Backup MongoDB mongodump --db "$DB_NAME" --out . tar -czf "$BACKUP" "$DB_NAME/" scp "$BACKUP" ${SSH_USER}@${TARGET}:/ # Send retrievers file scp "$RETRIEVERS" ${SSH_USER}@${TARGET}:/
Then run these wherever the container with the target environment is running.
export ENVIRONMENT="sandbox" # sandbox, staging or production export MONGO_CONTAINER="visna-$ENVIRONMENT-mongodb-1" export VISNA_CONTAINER="visna-$ENVIRONMENT-visna-1" export DB_NAME="visna_db_new" export BACKUP="${DB_NAME}_backup.tar.gz" export RETRIEVERS="retrievers_20250730014908.pkl" export USER="mtamassia@isn.edu.au" # Restore backup sudo docker cp "$BACKUP" $MONGO_CONTAINER:/ sudo docker exec -it -w / $MONGO_CONTAINER tar -xzf "$BACKUP" sudo docker exec -it -w / $MONGO_CONTAINER mongorestore --db $DB_NAME --username admin --password password --authenticationDatabase admin "$DB_NAME/" rm $BACKUP rm -rf "${DB_NAME}/" # Restore retrievers file sudo docker cp "$RETRIEVERS" $VISNA_CONTAINER:/app # Create user / make admin sudo docker exec -it -w / $MONGO_CONTAINER mongosh --username admin --password password --authenticationDatabase admin --eval ' db.user.insertOne({ "userid": "$USER", "user_name": "$USER", "is_admin": true, "tnc_accepted": true }); ' $DB_NAME sudo docker exec -it -w / $MONGO_CONTAINER mongosh --username admin --password password --authenticationDatabase admin --eval 'db.user.updateOne({user_name: "$USER"}, {$set: {is_admin: true}})' $DB_NAME
