کد زیر را در نرم افزار notepad کپی کنید و با پسوند .ps1 ذخیره کنید (مثال: backup.ps1)
# -------------------------------
# پشتیبان گیری از فایل
# -------------------------------
# مسیر فایل اصلی (فایل موردنظر خود را وارد کنید)
$source = "C:\مسیر\فایل\شما.mcdx" # فایل اصلی
# مسیر پوشه مقصد (پوشه ای که فایل های پشتیبان ذخیره می شوند)
$destination = "C:\مسیر\پوشه\پشتیبان"
# تعداد نسخه های پشتیبان (در هر چرخه)
$maxBackups = 3
# اطمینان از وجود پوشه پشتیبان
if (!(Test-Path -Path $destination)) {
New-Item -ItemType Directory -Path $destination
}
# شمارنده فایل پشتیبان
$counter = 1
while ($true) {
try {
# زمان جاری برای نامگذاری نسخه پشتیبان
$timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
$backupFile = "$destination\backup_$counter_$timestamp.mcdx"
# کپی فایل اصلی
Copy-Item -Path $source -Destination $backupFile -Force
Write-Host "نسخه پشتیبان شماره $counter ساخته شد: $backupFile"
# افزایش شمارنده
$counter++
# ریست شمارنده بعد از حداکثر تعداد نسخه ها
if ($counter -gt $maxBackups) {
$counter = 1
}
# توقف به مدت 2 دقیقه
Start-Sleep -Seconds 120
} catch {
Write-Host "خطا در پشتیبان گیری: $($_.Exception.Message)"
break
}
}
متغیر ها
قبل از اجرای اسکریپت متغیر های زیر را متناسب با نیاز خود تغییر دهید:
- $source = مسیر فایل اصلی شما (مثال: $source = “C:\source\test.mcdx”)
- $destination = مسیر فایل پشتیبان شما (مثال: $destination = “C:\backup\test”)
- $maxBackups = تعداد نسخه های پشتیبان (مثال: $maxBackups = 3)
اجرا
پاور شل را باز کنید و به مسیر فایل .ps1 بروید و دستور زیر را اجرا کنید
.\backup.ps1
اگر powershell اجازه اجرای اسکریپت را نمی دهد دستور زیر را اجرا کنید تا محدودیت برداشته شود
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
نکات:
- این اسکریپت هر ۲ دقیقه یک نسخه پشتیبان میگیرد و تا تعداد مشخصی نسخه (پیشفرض: ۳) ایجاد میکند.
- فایلهای پشتیبان در پوشه مقصد ذخیره خواهند شد.
- پس از پر شدن تعداد نسخهها، اسکریپت فایلهای جدید را با چرخهای مجدداً ذخیره میکند.
نمونه:
یه نمونه موردی هم برات آوردم.
$source = "H:\SESSIONS-CONNECTIONS\MAIN SESSION\59\DOCUMENT\GUSSET PLATE_CONNECTIONS_#1.mcdx"
$destination = "H:\SESSIONS-CONNECTIONS\MAIN SESSION\59\DOCUMENT\back up"
$maxBackups = 3
if (!(Test-Path -Path $destination)) {
New-Item -ItemType Directory -Path $destination
}
$counter = 1
while ($true) {
try {
$timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
$backupFile = "$destination\backup_$counter_$timestamp.mcdx"
Copy-Item -Path $source -Destination $backupFile -Force
Write-Host "نسخه پشتیبان شماره $counter ساخته شد: $backupFile"
$counter++
if ($counter -gt $maxBackups) {
$counter = 1
}
Start-Sleep -Seconds 120
} catch {
Write-Host "خطا در پشتیبان گیری: $($_.Exception.Message)"
break
}
}
مهندس امیررضا بهرامی
نویسنده
