Guest User

dumpDB # backup postgres db from docker container

a guest
Jan 3rd, 2023
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3.  
  4. #Postgres docoker container db for nextcloud
  5. pges_ct_id='postgresdb'
  6.  
  7. # Check if running as root
  8. if [ "$(id -u)" != "0" ]; then
  9. echo "This script must be run as root" 1>&2
  10. exit 1
  11. fi
  12.  
  13. # Display current time
  14. date +'%a %b %e %H:%M:%S %Z %Y'
  15.  
  16. # Put Nextcloud instance in maintenance mode
  17. docker exec -u www-data nextcloud php occ maintenance:mode --on
  18.  
  19. # Display current time
  20. date +'%a %b %e %H:%M:%S %Z %Y'
  21.  
  22. # Create directory for backup and delete old backups
  23. docker exec $pges_ct_id mkdir -p /var/lib/postgresql/data/backup/
  24. docker exec $pges_ct_id rm -f /var/lib/postgresql/data/backup/nextcloud.sql
  25.  
  26. # Create new backup using pg_dump and save to file
  27. docker exec $pges_ct_id sh -c 'pg_dump -U nextcloud -h localhost nextcloud >> /var/lib/postgresql/data/backup/nextcloud.sql'
  28.  
  29. # Delete old compressed backup file
  30. rm -f /root/docker/nextcloud/db_data/backup/nextcloud.tar.gz
  31.  
  32. # Check size of backup file
  33. if [ $(wc -c < /root/docker/nextcloud/db_data/backup/nextcloud.sql) -ge 100000 ]; then
  34. # File is larger than 100KB
  35. # Create tar archive and compress with gzip
  36. tar -cvf /root/docker/nextcloud/db_data/backup/nextcloud.tar /root/docker/nextcloud/db_data/backup/nextcloud.sql ; gzip -9 /root/docker/nextcloud/db_data/backup/nextcloud.tar
  37. else
  38. # File is smaller than 100KB
  39. # Send email notification
  40. echo "Backup nextcloud"| sendmail -f [email protected] -v [email protected] -m "The Nextcloud database backup is less than 100KB. It is likely that it has failed."
  41. fi
  42.  
  43. # Delete original backup file
  44. rm /root/docker/nextcloud/db_data/backup/nextcloud.sql
  45.  
  46. # Display current time
  47. date +'%a %b %e %H:%M:%S %Z %Y'
  48.  
  49. echo 'Maintenance mode is still active. It must be deactivated in the next backup!'
  50.  
  51. echo 'DONE'
  52.  
  53. # Display current time
  54. date +'%a %b %e %H:%M:%S %Z %Y'
  55.  
Advertisement
Add Comment
Please, Sign In to add comment