Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- MAX_VERSIONS=5
- BASE_DIR="/home/backy/sw-backups"
- DB_BACKUPS="$BASE_DIR/db"
- DIR_BACKUPS="$BASE_DIR/dir"
- MODE="0600"
- OWNER="backy"
- EXCLUDE_LIST="/etc/backup.exclude"
- mkdir -p "$DB_BACKUPS" "$DIR_BACKUPS"
- chown -R "$OWNER" "$DB_BACKUPS" "$DIR_BACKUPS"
- rotate(){
- local dir="$1"
- local pattern="$2"
- local versions="$3"
- local files=($(find "$dir" -name "$pattern" -printf "%C@ %p\n" | sort -n | cut -d' ' -f2-))
- while [[ "${#files[@]}" -ge "$versions" ]]
- do
- rm -rf "${files[0]}"
- unset files[0]
- backups=( "${files[@]}" )
- done
- }
- store_compressed(){
- local dir="$1"
- local name="$2"
- local ext="$3"
- local versions="$4"
- shift 4
- local tmpfile="`mktemp`"
- $@ | bzip2 -9 -c > "$tmpfile"
- [[ "${PIPESTATUS[0]}" -eq 0 ]] || {
- rm -f "$tmpfile"
- return 1
- }
- rotate "$dir" "${name}_*$ext" "$versions"
- local bname="$dir/${name}_`date +"%d.%m.%Y_%H.%M"`.$ext"
- mv "$tmpfile" "$bname" || {
- rm -f "$tmpfile"
- return 1
- }
- chmod "$MODE" "$bname"
- chown "$OWNER" "$bname"
- }
- backup_db(){
- local dbname="$1"
- local user="$2"
- local password="$3"
- store_compressed "$DB_BACKUPS" "$dbname" "sql.bz2" "$MAX_VERSIONS" mysqldump -u "$user" --password="$password" -B "$dbname"
- }
- backup_dir(){
- local dir="$1"
- local parent="`dirname "$dir"`"
- local fname="`basename "$dir"`"
- store_compressed "$DIR_BACKUPS" "$fname" "tar.bz2" "$MAX_VERSIONS" tar -X "$EXCLUDE_LIST" -C "$parent" -cf - "$fname"
- }
- backup_db dbname dbuser dbpassword
- backup_db dbname dbuser dbpassword
- backup_dir /home/site1/public_html
- backup_dir /home/site1/public_html
- # now run the syncer
- su - backy -c "sh -c 'cd dropbox-syncer && ruby cron.rb'"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement