از دیتابیس MySQL بک آپ گرفتیم به صورتی که این دیتابیس توی یک Docker Container بود که دیتای اون مپ شده به آدرس زیر. بنابراین با بک آپ از /var/lib/mysql تمامی دیتای این دیتابیس بک آپ گرفته میشه و میتونیم بعدا برداریم.
علاوه بر اون با استفاده از mysqldump هم از کل دیتابیس ها یک بک آپ توی فرمت sql گرفتم برای محکم کاری.
از طرفی این دیتا مربوط به یک وب اپلیکیشن هست که فایلهای آپلود شده و آواتارها و هر چیزی که آدرسش توی دیتابیس هست اما خود فایل توی /project/uploads ذخیره شده. بنابراین باید از این مسیر هم یک بک آپ بگیریم. نتیجه شد اسکریپت زیر:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
timestamp=$(date +"%Y%m%d_%H%M%S") backup_dir="/home/backup" filesystem_filename_backup="mysql_data_backup_FS_${timestamp}.tar.gz" mysql_backup_file="mysql_data_backup_DUMP_${timestamp}.sql" media_backup_file="media_files_backup_${timestamp}.tar.gz" docker run --rm --volumes-from mysql -v ${backup_dir}/:/backup busybox tar cvfz backup/${filesystem_filename_backup} --directory=/var/lib/mysql . if [ $? -eq 0 ]; then echo "backup successfull: ${filesystem_filename_backup}" else echo "Error" exit 1 fi echo "Starting MySQL backup..." docker exec mysql mysqldump -u root -p'yourpassword' --all-databases > ${backup_dir}/${mysql_backup_file} if [ $? -eq 0 ]; then echo "MySQL backup successful: ${mysql_backup_file}" else echo "MySQL backup failed!" exit 1 fi echo "Starting media files backup..." tar -czf ${backup_dir}/${media_backup_file} -C /project/uploads . if [ $? -eq 0 ]; then echo "Media files backup successful: ${media_backup_file}" else echo "Media files backup failed!" exit 1 fi echo "Backup completed successfully!" |