Skip to content

Instantly share code, notes, and snippets.

@zyuskin
Last active April 22, 2016 06:24
Show Gist options
  • Save zyuskin/ac9b9f0f6319b6ed7e30bc4c00db0842 to your computer and use it in GitHub Desktop.
Save zyuskin/ac9b9f0f6319b6ed7e30bc4c00db0842 to your computer and use it in GitHub Desktop.
Набор процедур для резервного копирования unix систем
#!/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