Last active
April 22, 2016 06:24
-
-
Save zyuskin/ac9b9f0f6319b6ed7e30bc4c00db0842 to your computer and use it in GitHub Desktop.
Набор процедур для резервного копирования unix систем
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment