در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

فشرده کردن و ارسال بک آپ به یک سرور اف تی پی

با سلام ، من برای اینکه بتوانم از ذخیره های برنامه اسکیو ال در مکان های دیگر پشتیبان داشته باشم به فکر نوشتن یک برنامه توسط بچ فایل افتادم و اکنون که این برنامه 3 سال است که به خوبی کار میکند تصمیم گرفتم آن را در این مکان به اشتراک بگذارم .روش کار این برنامه : با اجرای این برنامه در پوشه ای که در آن پوشه پوشه ذخیره بک آپ های اسکیو ال قرار دارد این برنامه توشط برنامه winrar شروع به فشرده ردن فایلهایی می کند که امروز گرفته شده است سپس خود یک بچ فایل دیگر می سازد که با اجرای آن اقدام به ارسال فایل های فشرده به سرور اف تی پی می نماید.این برنامه نام فایل فشرده را ترکیبی از نام شرکت نام بانک و تاریخ ایجاد میکند ، ابتدا کل متن زیر را در یک فایل تکست کپی کنید و بعد از دادن اطلاعات مورد نیاز که از خط دوم شروع می شود آن را با فرمت bat خیره نمائید :


echo ************* Start in %%B Time is :%time:~0,11%  >batlog\out1.txt	
set Zone=نام شرکت
set FtpIp=آي پي اف تي پي سرور
set Ftpuser=نام کاربري اف تي پي
Set FtpPass=کلمه عبور
set FtpRoot=آدرس پوشه در اف تي ي 
set keepWeek=کدام روز هفته نگه داري شود 
set rarpass=رمز فایل فشرده 

rem ***********        پایان تنظیمات  **************
set mm=%date:~4,2%
set dd=%date:~7,2%
set yy=%date:~10,4%
set Week=%date:~0,3%
set filename=%week%-%yy%-%mm%-%dd%
set BkRoot=%cd%
md batlog
MD FTPBAT
del /s /q FTPBAT\*.bat
echo all bat file in ftpbat is deleted   >>batlog\out1.txt
del /s /q SENDING.BAT
echo  SENDING.BAT is deleted   >>batlog\out1.txt
FOR /f "tokens=*" %%A IN ('DIR *.* /a:d /B') DO (
	set PA=%%A
	REN %%A\%%A_backup_%yy%_%mm%_%dd%_*.BAK %ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK
	IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK echo The File %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK Exist >>batlog\out1.txt
	IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK rar a /p%rarpass% %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd% %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK >>batlog\out1.txt
	IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR del /s /q %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK
	IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo open %FtpIp%>FTPBAT\%%A-ftp.bat
	IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo %FtpUser%>>FTPBAT\%%A-ftp.bat
	IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo %FtpPass%>>FTPBAT\%%A-ftp.bat
	IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR if not "%FtpRoot%"=="" echo cd %FtpRoot%>>FTPBAT\%%A-ftp.bat
	IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo mkdir %%A>>FTPBAT\%%A-ftp.bat
	IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo cd %%A>>FTPBAT\%%A-ftp.bat
	IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR if not "%keepWeek%"=="%week%" echo mdelete %ZONE%-%%A-%week%-%yy%-%mm%-%dd%*.rar>>FTPBAT\%%A-ftp.bat
	IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo send %BkRoot%\%%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.rar>>FTPBAT\%%A-ftp.bat
	IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo by>>FTPBAT\%%A-ftp.bat
	IF EXIST FTPBAT\%%A-ftp.bat echo ************* This %%A-ftp.bat is Cereted :%time:~0,11%  >>batlog\out1.txt
	IF EXIST FTPBAT\%%A-ftp.bat ECHO call ftp -i -s:%BkRoot%\FTPBAT\%%A-ftp.bat >>SENDING.BAT
	IF EXIST FTPBAT\%%A-ftp.bat ECHO THE %%A-ftp.bat ADD TO SENDING.BAT >>batlog\out1.txt
	echo.>>batlog\out1.txt
	echo.>>batlog\out1.txt
)
GOTO END

:END
copy batlog\out1.txt batlog\%Zone%-%FtpIp%%filename%.txt
call SENDING>> batlog\SENDING%yy%-%mm%-%dd%.txt

سپس این فایل را در پوشه ای که در آن پوشه پوشه بانک اطلاعاتی که توسط برنامه اس کیو ال ایجاد شده است کپی نمائید ،از پوشه برنامه winrar فایل Rar.exe را کنار این فایل قرار دهید حالا با اجرای این بچ فایل برنامه کار خود را آغاز میکند اگر می خواهید که این برنامه کار فشرده نمودن را در یک زمان و ارسال را در یک زمان دیگر انجام دهد خط آخر را پاک نمائید،توجه این برنامه بعد از فشرده کردن فایل اصلی را پاک میکند.- اگر مایل به پاک کردن بعد از فشردن نیستید این خط را غیر فعال نمائید :

IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR del /s /q %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK
#بکاپ_گیری_از_sql_سرور #آموزش_بکاپ_گیری_از_sql_سرور #ارسال_از_طریق_ftp #فشرده_سازی_backup #بچ_فایل
2 نظر
کمیل یوسفی کمالی

با سلام و احترام

ضمن تشکر خواهشمند است در رابطه با جزئیات اسکریپت بیشتر توضیح دهید

به عنوان مثال در خصوص خطوط ابتدایی و همچنین نحوه عملکرد برنامه

محمد کریمی

منظور شما رو من درست نفهمیدم چون خطوط ابتدایی در مورد داده هایی است که باید پر بشه البته به زبان انگلیسی و همچنین نباید بین حروفش فاصله باشه چون ممکنه سیستم اشتباه کار کنه

روش این برنامه این طور میشه توضیح داد

از خط 10 تا 18 یک سری اطلاعات رو توی متغیر های خودش میریزه مثل تاریخ و محل قرار گیری این بچ فایل

از خط 19 تا 22 بچ فایل هایی که در آخرین اجراش درست کرده بود رو پاک میکنه و توی فایل لاگی که به نام out1و توی پوشه batlog هست این کار کار ها رو ثبت میکنه

از 23 تا 43 که یه دستور for هست این کار ها رو انجام میده

اول توسط دستور dir لیستی از همه فایل ها رو توی for قرار میده که بهتره که به جای . دستور *.bak باشه توی خط بعدی فایل bak رو که پیدا کرده اسمشو عوض میکنه به این نام

27 گزارش تغییر نام رو ثبت میکنه 28 فایل تغیر یافته رو فشرده میکنه 29 فایل اصلی رو پاک میکنه

echo ************* Start in %%B Time is :%time:~0,11% >batlog\out1.txt

set Zone=نام شرکت

set FtpIp=آي پي اف تي پي سرور

set Ftpuser=نام کاربري اف تي پي

Set FtpPass=کلمه عبور

set FtpRoot=آدرس پوشه در اف تي ي

set keepWeek=کدام روز هفته نگه داري شود

set rarpass=رمز فایل فشرده

rem ********** پایان تنظیمات *************

set mm=%date:~4,2% ذخیره شماره ماه جاری

set dd=%date:~7,2% ذخیره شماره روز جاری

set yy=%date:~10,4% ذخیره سال جاری

set Week=%date:~0,3% ذخیره ناه هفته جاری

set filename=%week%-%yy%-%mm%-%dd% ایجاد یک متغییر برای ساخت نام فایل

set BkRoot=%cd% استخراج پوشه جاری

md batlog ساخت پوشه

MD FTPBAT ساخت پوشه

del s q FTPBAT\*.bat پاک کردن فایل های بچ فایل آخرین کار کرد برنامه

echo all bat file in ftpbat is deleted >>batlog\out1.txt ارسال گزارش به فایل out

del s q SENDING.BAT پاک کردن فایل

echo SENDING.BAT is deleted >>batlog\out1.txt ارسال گزارش

FOR f "tokens=" %%A IN ('DIR .bak a:d /B') D دستور برای استخراج فال های bak

set PA=%%A

REN %%A\%%Abackup%yy%%mm%%dd%_*.BAK %ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK

jتغییر نام فایل پیدا شده به نام شرکت-نام پوشه ای که توش فایله هست -نام روز هفته -سال-ماه-روز

IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK echo The File %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK Exist >>batlog\out1.txt

ارسال گزارش در رابطه با تغییر نام فایل

IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK rar a

/p%rarpass% %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd% %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK >>batlog\out1.txt

در صورت وجود فایل ایجاد شده فال را فشرده می کند

IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR del s q %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.BAK

در صورت وجود فایل فشرده فایل اصلی را پاک می کند

IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo open %FtpIp%>FTPBAT\%%A-ftp.bat

ساخت یک بچ فایل برای اتصال به اف تی پی دستور باز کردن اف

IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo %FtpUser%>>FTPBAT\%%A-ftp.bat

ارسال دستور نام کاربری اف

IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo %FtpPass%>>FTPBAT\%%A-ftp.bat

ارسال کلمه عبور اف تی پی

IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR if not "%FtpRoot%"=="" echo cd %FtpRoot%>>FTPBAT\%%A-ftp.bat

در صورت داشتن زیر پوشه در اف وارد شده به آن زیر پوشه

IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo mkdir %%A>>FTPBAT\%%A-ftp.bat

ساخت یک پوشه در اف به نام پوشه ای که حاوی فایل بک آپ است (نام دیتا بیس)

IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo cd %%A>>FTPBAT\%%A-ftp.bat

وارد شده به پوشه ساخته شده در اف

IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR if not "%keepWeek%"=="%week%" echo mdelete %ZONE%-%%A-%week%-%yy%-%mm%-%dd%*.rar>>FTPBAT\%%A-ftp.bat

این خطوط فایل هفته قبل را بر اساس نام هفته در اف پاک میکند

IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo send %BkRoot%\%%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.rar>>FTPBAT\%%A-ftp.bat

IF EXIST %%A\%ZONE%-%%A-%week%-%yy%-%mm%-%dd%.RAR echo by>>FTPBAT\%%A-ftp.bat

دستور خروج از اف

IF EXIST FTPBAT\%%A-ftp.bat echo ************* This %%A-ftp.bat is Cereted :%time:~0,11% >>batlog\out1.txt

ارسال گزارش

IF EXIST FTPBAT\%%A-ftp.bat ECHO call ftp -i -s:%BkRoot%\FTPBAT\%%A-ftp.bat >>SENDING.BAT

ساخت بچ فایلی که دستورات اف را اجرا کند

IF EXIST FTPBAT\%%A-ftp.bat ECHO THE %%A-ftp.bat ADD TO SENDING.BAT

>>batlog\out1.txt

ساخت بچ فایلی برای اجرای دستوراتی که ایجاد شده به ترتیب

echo.>>batlog\out1.txt

echo.>>batlog\out1.txt

)

GOTO END

:END

copy batlog\out1.txt batlog\%Zone%-%FtpIp%%filename%.txt

call SENDING>> batlog\SENDING%yy%-%mm%-%dd%.txt

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....