سلام
من برای یک کار شخصی احتیاج داشتم که یه اسکریپت اتوماتیک بک آپ بگیره ( هر تیبل جدا گانه بگیره که فشار به سرور نیاد ) و بک آپ هر تیبل رو پس از تکمیل انتقال بده به سرور دوم و فایلش رو پاک کنه و بره سراغ تیبل بعدی .
حتی نیاز بود که اگر در سرور هدف پوشه موردنظر من وجود نداشت اسکریپت بره خودش بسازه پوشه رو و بک آپ رو بریزه تو اون پوشه .
این اسکریپت رو نوشتم . ممکنه ایراداتی داشته باشه ولی به هر حال فعلا کار من رو راه انداخته ... گفتم بزارم که بقیه دوستان اگر نیازشون شد ازش استفاده کنن و الکی وقت صرف نوشتن نکنن .
این اسکریپت لاگ عملیات بک آپ رو هم بعد از اتمام ایمیل میکنه
نکته : بین سرور اول و سرور دوم باید ssh passwordless login فعال باشه .
یه نسخه ftp هم داره این که الان دم دستم نیست اونو هم میزارم که با ftp منتقل میکنه
کد:/bin/sh NOW=$(date +"%d-%m-%Y") DAY=$(date +"%a") MUS="MYSQL_USERNAME" MPA="MYSQL_BACKUP" MHO="localhost" MDB="DATABASE_NAME" MYSQL="$(which mysql)" GZIP="$(which gzip)" LOG="/root/backup.log" RIP="REMOTE_BACKUP_SERVER_IP" RPATH="/home/daily/$(date +'%d-%m-%Y')" EMAIL="mohsenshahbazi@gmail.com" echo "Backup started in $(date +'%d-%m-%Y %H:%M:%S')" > $LOG tables=$(mysql -ss -h $MHO -u $MUS -p$MPA $MDB -e'show tables;') #tables=$(mysql -ss -h $MHO -u $MUS -p$MPA $MDB -e"show tables LIKE '%$1%';") uncomment to backup specific table in database f="$(ssh root@$RIP mkdir -p $RPATH)" for t in $tables do FILE=mysql-$MDB-$NOW-$(date +"%T")-$t.gz echo "Dumping $t" mysqldump -u $MUS -p$MPA $MDB --tables "$t" | $GZIP -9 > $FILE echo "Table $t BACKED UP - $(date)" >> $LOG scp ./$FILE root@$RIP:$RPATH echo "$t Moved to backup server" rm -fr $FILE echo "$t BackupFile Has Been Deleted" done echo "Date :$(date)">>$LOG echo "HOST:$(hostname)">>$LOG echo "BACKUP DONE">>$LOG mail -s "Daily backup-$(date +'%d-%m-%Y') Done" "$EMAIL" <$LOG





پاسخ با نقل قول
