Skip to content

Instantly share code, notes, and snippets.

@breadlesscode
Last active November 2, 2017 14:20
Show Gist options
  • Save breadlesscode/2f2e274a3c9314b99ac71fc6b2afb07a to your computer and use it in GitHub Desktop.
Save breadlesscode/2f2e274a3c9314b99ac71fc6b2afb07a to your computer and use it in GitHub Desktop.
Small linux bash script to backup NEOS CMS. For Cronjobs or something else
#!/bin/bash
# Paths and package key
BACKUP_FOLDER="NEOS_Backup_%s" # %s is for date
NEOS_ROOT="/var/www/html/neos"
BACKUP_ROOT="/home/xy/backups"
NEOS_PACKAGE="My.Package"
# Which routines should be started
COMPRESS_BACKUP=true
NEOS_FLOW_EXPORT=true
MYSQL_FULL_BACKUP=true
DELETE_OLD_BACKUPS=true
# mysql backup configuration
MYSQL_HOST=localhost
MYSQL_USER=user
MYSQL_PW=password
MYSQL_DB=database
# backup script
BACKUP_FOLDER=$(printf "$BACKUP_FOLDER" "$(date +%Y-%m-%d_%H-%M-%S)")
BACKUP_FOLDER_PATH=$(printf "%s/%s" "$BACKUP_ROOT" "$BACKUP_FOLDER")
printf "Create backup folder..."
mkdir "$BACKUP_FOLDER_PATH"
printf "done!\n"
if [ "$NEOS_FLOW_EXPORT" = true ]; then
# go neos root
cd $NEOS_ROOT
printf "Start flow:site:export for package %s..." "$NEOS_PACKAGE"
# export site with neos internal backup function
./flow site:export --package-key="$NEOS_PACKAGE" &>/dev/null
# copy backup to backup folder
cp -R $(printf "./Packages/Sites/%s/Resources/Private/Content" "$NEOS_PACKAGE") "$BACKUP_FOLDER_PATH"
printf "done!\n"
fi
if [ "$MYSQL_FULL_BACKUP" = true ]; then
printf "Start database backup..."
# dump mysql database
mysqldump --skip-comments --result-file=$(printf "%s/mysql_full_backup.sql" "$BACKUP_FOLDER_PATH") -u "$MYSQL_USER" -h "$MYSQL_HOST" -p"$MYSQL_PW" "$MYSQL_DB"
printf "done!\n"
fi
if [ "$COMPRESS_BACKUP" = true ]; then
printf "Start compressing backup..."
# go to backup folder
cd "$BACKUP_ROOT"
# compress backup folder
tar --remove-files -czvf $(printf "%s.tar.gz" "$BACKUP_FOLDER") "./$BACKUP_FOLDER" &>/dev/null
printf "done!\n"
fi
if [ "$DELETE_OLD_BACKUPS" = true ]; then
printf "Start deleting old backups..."
# delete backups older than 7 days
find "$BACKUP_ROOT" -mtime +7 -exec rm {} \;
printf "done!\n"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment