घंटों और घंटों के काम के बाद, मैंने नीचे जैसा समाधान बनाया। मैं अन्य लोगों के लिए कॉपी पेस्ट करता हूं जो लाभ उठा सकते हैं।
पहले एक स्क्रिप्ट फ़ाइल बनाएं और इस फ़ाइल को निष्पादन योग्य अनुमति दें।
# cd /etc/cron.daily/
# touch /etc/cron.daily/dbbackup-daily.sh
# chmod 755 /etc/cron.daily/dbbackup-daily.sh
# vi /etc/cron.daily/dbbackup-daily.sh
फिर निम्न पंक्तियों को Shift+Ins के साथ फ़ाइल में कॉपी करें
#!/bin/sh
now="$(date +'%d_%m_%Y_%H_%M_%S')"
filename="db_backup_$now".gz
backupfolder="/var/www/vhosts/example.com/httpdocs/backups"
fullpathbackupfile="$backupfolder/$filename"
logfile="$backupfolder/"backup_log_"$(date +'%Y_%m')".txt
echo "mysqldump started at $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"
mysqldump --user=mydbuser --password=mypass --default-character-set=utf8 mydatabase | gzip > "$fullpathbackupfile"
echo "mysqldump finished at $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"
chown myuser "$fullpathbackupfile"
chown myuser "$logfile"
echo "file permission changed" >> "$logfile"
find "$backupfolder" -name db_backup_* -mtime +8 -exec rm {} \;
echo "old files deleted" >> "$logfile"
echo "operation finished at $(date +'%d-%m-%Y %H:%M:%S')" >> "$logfile"
echo "*****************" >> "$logfile"
exit 0
संपादित करें:
यदि आप InnoDB का उपयोग करते हैं और बैकअप में बहुत अधिक समय लगता है, तो आप "एकल लेन-देन
"लॉकिंग को रोकने के लिए तर्क। तो mysqldump लाइन इस तरह होगी:
mysqldump --user=mydbuser --password=mypass --default-character-set=utf8
--single-transaction mydatabase | gzip > "$fullpathbackupfile"