Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- RULES_FILE=/etc/backup.rules
- HOSTNAME=`hostname`
- BACKUP_DIRECTORY="/root/backup"
- BACKUP_FILE_NAME="`date +%d-%m-%Y`.tgz"
- [ -f "~/.backuprc" ] && ~/.backuprc
- [ ! -d "$BACKUP_DIRECTORY" ] && mkdir -p $BACKUP_DIRECTORY
- function help() {
- echo "Usage: $0";
- }
- function list() {
- [ -f "$RULES_FILE" ] && cat $RULES_FILE || echo "$RULES_FILE: No such file or directory use -e option"
- }
- function edit() {
- mcedit $RULES_FILE
- [ -f "$RULES_FILE" ] && chmod 600 $RULES_FILE
- }
- function make() {
- [ -f "$RULES_FILE" ] && . $RULES_FILE || echo "$RULES_FILE: No such file or directory use -e option"
- }
- function to_log(){
- [ ! -z "$1" ] && echo "$1"
- }
- function backup_dir() {
- [ $# -le 1 ] && exit 1;
- prefix=$1
- src_dir=${@#${prefix}}
- #path=${path## }
- #src_dir=${@//${prefix}/}
- tar -zcf "$BACKUP_DIRECTORY/$prefix-$BACKUP_FILE_NAME" $src_dir > /dev/null 2>&1
- return $?
- }
- function backup_postgres(){
- database=$1
- user=$2
- password=$3
- if [ -z "$database" ] || [ -z "$user" ]; then
- to_log "Не все параметры заполнены"
- return 1
- fi;
- tmp="/tmp/pg-database-$database-`date +%s`.sql"
- /usr/bin/pg_dump -U $user -f $tmp $database
- if [ $? -ne 0 ]; then
- to_log "Не удалось создать резервную копию"
- return 1
- fi;
- tar -zcf "$BACKUP_DIRECTORY/pg-db-$database-$BACKUP_FILE_NAME" "$tmp" > /dev/null 2>&1
- ret=$?
- rm -f "$tmp"
- return $ret
- }
- function backup_mysql(){
- database=$1
- user=$2
- password=$3
- if [ -z "$database" ] || [ -z "$user" ]; then
- to_log "Не все параметры заполнены"
- return 1
- fi;
- tmp="/tmp/mysql-database-$database-`date +%s`.sql"
- mysqldump -u$user --password=$password $database > $tmp
- if [ $? -ne 0 ]; then
- to_log "Не удалось создать резервную копию"
- return 1
- fi;
- tar -zcf "$BACKUP_DIRECTORY/mysql-db-$database-$BACKUP_FILE_NAME" "$tmp" > /dev/null 2>&1
- ret=$?
- rm -f "$tmp"
- return $ret
- }
- function backup_purge() {
- [ $# -le 1 ] && exit 1;
- days=$1
- path=${@#${days}}
- path=${path## }
- #echo $days
- if [ -d "$path" ]; then
- find $path -type f -mtime +$days -exec rm -f {} \;
- fi
- }
- i=1
- for n in $@; do
- let i=i+1
- #group=\$${i};
- case "$n" in
- -l|--list) list; exit;;
- -h|--help) help; exit;;
- -e|--edit) edit; exit;;
- -m|--make) make; exit;;
- esac
- done
- edit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement