Friday, July 4, 2025

.::: Script Daily Backup MongoDB using Date or Compress :::.

  


1. Script backup full 


#[root@teguhth mongod]# cat backup_mongodb_full_script.sh
##-bash-4.2$ cat backup_mongodb_full_script.sh
echo ""
Server=$(hostname)
ip_address=$(ip a | awk '/inet / && $2 !~ /^127\./ {gsub("addr:","",$2); print $2}')
# Print the IP address
 
ipx='10.10.10.90'
portx='27017'
userx='admin'
passwdx='admin'
dbversion=$(mongosh --host=$ipx --port=$portx --quiet -u $userx -p $passwdx --authenticationDatabase admin --eval 'db.version()');

infotgl=$(date)
echo ".::: Backup Full All database using custom in '$Server' with IP $ip_address :::."
echo ""
echo "MongoDB Version : '$Server' $dbversion"
echo ""
#!/bin/bash
#
#clear;
year=`date +%Y`; month=`date +%m`; day=`date +%d`; hour=`date +%H`; min=`date +%M`; sec=`date +%S`; dayname=`date +%a`;underscore='_';
echo "Backup begin $infotgl"
echo ""
 backuppath="/root/backupmongodb";

dbname=$(mongosh --host=$ipx --port=$portx --quiet -u $userx -p $passwdx --authenticationDatabase admin --eval 'db.adminCommand("listDatabases").databases.filter(db => !["admin","config","local"].includes(db.name)).forEach(db => print(db.name))');

for listdb in $dbname
do

mkdir -p $backuppath/$year$month$day;
#path="$backuppath/$year$month$day/$listdb";
path="$backuppath/$year$month$day/";
echo "Backup Full for database '$listdb' in $path start at $year$month$day$underscore$hour$min$sec"

 mongodump --host=$ipx --db=$listdb  -u=$userx -p=$passwdx --out=$path
echo "Finish Backup Full for database '$listdb' in $path at $year$month$day$underscore$hour$min$sec"
echo ""
done;
echo ""
echo "Backup finish $infotgl"
echo ""

echo "Copyright by           : Teguh Triharto"
echo "Website                : https://www.linkedin.com/in/teguhth"
echo ""


2. script backup full with date 

[root@teguhth mongod]# cat backup_mongodb_full_script_date.sh
#!/bin/bash

Server=$(hostname)
ip_address=$(ip a | awk '/inet / && $2 !~ /^127\./ {gsub("addr:","",$2); print $2}')
dbversion=$(mongosh --host=10.10.10.90 --port=27017 --quiet -u admin -p admin --authenticationDatabase admin --eval 'db.version()')
infotgl=$(date)
year=$(date +%Y); month=$(date +%m); day=$(date +%d)
hour=$(date +%H); min=$(date +%M); sec=$(date +%S)
underscore='_'

echo ""
echo ".::: Backup Full All database using custom in '$Server' with IP $ip_address :::."
echo ""
echo "MongoDB Version : '$Server' $dbversion"
echo ""
echo "Backup begin $infotgl"
echo ""

backuppath="/root/backupmongodb"
mkdir -p $backuppath/$year$month$day

# Ambil nama database kecuali admin, config, local
dbname=$(mongosh --host=10.10.10.90 --port=27017 --quiet -u admin -p admin --authenticationDatabase admin --eval \
'db.adminCommand("listDatabases").databases.filter(db => !["admin","config","local"].includes(db.name)).map(db => db.name).join(" ")')

for listdb in $dbname
do
  timestamp=${year}${month}${day}${underscore}${hour}${min}${sec}
  path="$backuppath/$year$month$day/${listdb}_${timestamp}"
  mkdir -p "$path"
  echo "Backup Full for database '$listdb' in $path start at $timestamp"

  mongodump --host=10.10.10.90 --port=27017 --db="$listdb" -u=admin -p=admin --authenticationDatabase=admin --out="$path"

  echo "Finish Backup Full for database '$listdb' in $path at $timestamp"
done

echo ""
echo "Backup finish $infotgl"
echo ""
echo "Copyright by           : Teguh Triharto"
echo "Website                : https://www.linkedin.com/in/teguhth"
echo ""

[root@teguhth mongod]#


3. script backup full with date & gzip 

[root@teguhth mongod]# cat backup_mongodb_full_script_compres.sh
#!/bin/bash

Server=$(hostname)
ip_address=$(ip a | awk '/inet / && $2 !~ /^127\./ {gsub("addr:","",$2); print $2}')
dbversion=$(mongosh --host=10.10.10.90 --port=27017 --quiet -u admin -p admin --authenticationDatabase admin --eval 'db.version()')
infotgl=$(date)
year=$(date +%Y); month=$(date +%m); day=$(date +%d)
hour=$(date +%H); min=$(date +%M); sec=$(date +%S)
underscore='_'

echo ""
echo ".::: Backup Full All database using custom in '$Server' with IP $ip_address :::."
echo ""
echo "MongoDB Version : '$Server' $dbversion"
echo ""
echo "Backup begin $infotgl"
echo ""

backuppath="/root/backupmongodb"
mkdir -p $backuppath/$year$month$day

# Ambil nama database kecuali admin, config, local
dbname=$(mongosh --host=10.10.10.90 --port=27017 --quiet -u admin -p admin --authenticationDatabase admin --eval \
'db.adminCommand("listDatabases").databases.filter(db => !["admin","config","local"].includes(db.name)).map(db => db.name).join(" ")')

for listdb in $dbname
do
  timestamp=${year}${month}${day}${underscore}${hour}${min}${sec}
  foldername="${listdb}_${timestamp}"
  path="$backuppath/$year$month$day/$foldername"
  mkdir -p "$path"

  echo "Backup Full for database '$listdb' in $path start at $timestamp"

  mongodump --host=10.10.10.90 --port=27017 --db="$listdb" -u=admin -p=admin --authenticationDatabase=admin --out="$path"

  echo "Finish Backup Full for database '$listdb' in $path at $timestamp"

  # Kompres folder hasil backup
  cd "$backuppath/$year$month$day"
  tar -czf "${foldername}.tar.gz" "$foldername"

  # Hapus folder hasil dump setelah dikompres
  rm -rf "$foldername"
  cd - >/dev/null
done

echo ""
echo "Backup finish $infotgl"
echo ""
echo "Copyright by           : Teguh Triharto"
echo "Website                : https://www.linkedin.com/in/teguhth"
echo ""

[root@teguhth mongod]#


No comments:

Post a Comment

Popular Posts