Вариаций данного скрипта на просторах сети очень много, вот мой, который я использую для сохранения копий MySQL баз данный, он сохраняет каждую базу в отдельности и пакует их при помощи gzip, так же есть возможность игнорировать определенные базы.
#!/bin/bash # #Buckup MySQL databases #v0.1 base #v0.11 Added chmod and chown #v0.12 gzip bases MySQLuser="root" MySQLuser="user" # username with Grand priveleges MySQLuserPass="password" # password for user MySQLhost="localhost" # hostname or IP of MySQL server # Linux bin paths change it if needed # Linux bin paths change it if needed MYSQL="mysql" MYSQLDUMP="mysqldump" GZIP="gzip" # Backup dest directory dest="/root/tmp" # Main directory where backup will be stored main="$dest/test" # Get data in dd-mm-yyyy format time_now="$(date +"%d-%m-%Y")" # DO NOT BACKUP these databases, use space between bases. ignore="test vmail" [ ! -d $main ] && mkdir -p $main || : # Only root can access it! chown root:root -R $dest chmod 0600 $dest # Get database list #Starting buckup precess enter="$($MYSQL -u $MySQLuser -h $MySQLhost -p$MySQLuserPass -Bse 'show databases')" #Buckup process for db in $enter do skipdb=-1 if [ "$ignore" != "" ]; then for i in $ignore do [ "$db" == "$i" ] && skipdb=1 || : done fi if [ "$skipdb" == "-1" ] ; then FILE="$main/$db.$MySQLhost.$time_now.gz" # do all inone job in pipe, # connect to mysql using mysqldump for select mysql database # gzip after that $MYSQLDUMP -u $MySQLuser -h $MySQLhost -p$MySQLuserPass $db | $GZIP -9 > $FILE fi done