PostgreSQL Backup Script
#!/bin/sh
DB_NAME=mydatabase
DATE=`date +%Y%m%d%H%M%S`
DIR=/backups/pgsql
PG_DUMP=/usr/bin/pg_dump
$PG_DUMP $DB_NAME | bzip2 > $DIR/$DB_NAME_$DATE.sql.bz2
find $DIR -mtime +7 -exec rm {} \;
This script is a simple shell script for automating the backup of a PostgreSQL database. It's written to be run in a Unix-like environment (such as Linux or macOS). Let me break it down for you:
#!/bin/sh: This is the shebang line. It
tells the system that this script should be run with
/bin/sh, which is the standard command
interpreter for shell scripts on Unix-like systems.
DATE=$(date +%Y%m%d%H%M%S): This line sets
a variable named DATE. The
date command is used to generate a
timestamp in the format of YearMonthDayHourMinuteSecond (e.g., 20240114235959
for January 14, 2024, at 23:59:59). This timestamp is used to uniquely name
each backup file.
DIR=/backups/pgsql: Sets the
DIR variable to the directory where the
backups will be stored, /backups/pgsql in
this case.
PG_DUMP=/usr/bin/pg_dump: This line sets
the PG_DUMP variable to the path of the
pg_dump utility.
pg_dump is a utility provided by PostgreSQL
to dump (backup) the contents of a database.
$PG_DUMP mydatabase | bzip2 > $DIR/mydatabase_$DATE.sql.bz2: This line is the core of the script. It uses
pg_dump to dump the database named
mydatabase. The output of
pg_dump is piped (|) into bzip2, which compresses the data.
The compressed backup is then redirected (>) to a file in the specified directory with the database name, the date, and
the .sql.bz2 extension. For example, the
backup file could be named
mydatabase_20240114235959.sql.bz2.
find $DIR -mtime +7 -exec rm {} \;: This
line cleans up old backups. It uses the
find command to look for files in the
backup directory ($DIR) that were modified
more than 7 days ago (-mtime +7). For each
of these files, the rm command is executed
(-exec rm {} \;) to delete the file. This
ensures that the backup directory doesn't get filled up with old backups.
This small shell script provides a simple way to regularly backup a PostgreSQL database and clean up old backups to conserve storage space. The script could be scheduled to run at regular intervals using a cron job or a similar scheduling utility.
