در سرورهای لینوکسی می توانید با استفاده ازاین اسکریپت در SSH به اهداف ذیل دست پیدا کنید:
- تهیه نسخه پشتیبان از پوشه ها و فایلهای مورد نظر
- امکان عدم تهیه نسخه پشتیبان از پوشه هایی مشخص درون فایلهای فوق
- فشرده سازی نسخه پشتیبان
- تغییر نام فایل نسخه پشتیبان به همراه متغیر هایی همچون تاریخ و ساعت
- تهیه نسخه پشتیبان از بانک اطلاعاتی MySQL
- ارسال نسخه پشتیبان به سرور FTP
ابتدا فایل اجرایی را با دستور زیر ایجاد نمائید.
[root@zagrio ~]# nano backup.shمحتوای فایل: (موارد قرمز رنگ می بایست مطابق نیاز اصلاح شود)
#!/bin/sh #Path Configuration export BACKUP_PATH='/root/backup/' export FILES_BACKUP_FILENAME='files.tar.gz' export DATABASE_BACKUP_FILENAME='database.sql.gz' export PATH_TO_BACKUP='/path/to/backup' export PATH_TO_EXCLUDE1='/path/to/backup/excludethis1' export PATH_TO_EXCLUDE2='/path/to/backup/excludethis2' #Database Configuration export DATABASE_USERNAME='username' export DATABASE_PASSWORD='password' export DATABASE_HOST='localhost' export DATABASE_NAME='database' #FTP Configuration export FTP_HOST='ftp.host.com' export FTP_USERNAME='username' export FTP_USERNAME='password' #Create Backup Directory mkdir $BACKUP_PATH #Compress files / define any excluded folder tar -cjvf $BACKUP_PATH$DATABASE_BACKUP_FILENAME $PATH_TO_BACKUP --exclude $PATH_TO_EXCLUDE1 --exclude $PATH_TO_EXCLUDE2 #Create MySQL Backup mysqldump -u $DATABASE_USERNAME -h $DATABASE_HOST -p$DATABASE_PASSWORD $DATABASE_NAME | gzip -9 > $BACKUP_PATH$DATABASE_BACKUP_FILENAME #Get Date MY_DATE=`date +%Y%m%d` export MY_DATE #Transfer Backups to FTP Host ftp -n -i $FTP_HOST <<END_SCRIPT user ${FTP_USERNAME} ${FTP_PASSWORD} put ${BACKUP_PATH}${DATABASE_BACKUP_FILENAME} files_${MY_DATE}.sql.gz put ${BACKUP_PATH}${FILES_BACKUP_FILENAME} database_${MY_DATE}.tar.gz END_SCRIPT #Remove local backup after upload rm $BACKUP_PATH* -fسپس با دستور زیر سطح دسترسی اجرایی برای آن تعریف کنید
[root@zagrio ~]# chmod backup.sh 777
حالا به شکل زیر آن را اجرا نمائید و یا در Cron قرار دهید.
[root@zagrio ~]# ./backup.sh