پشتیبان‌گیری خودکار از فایل‌ها در PowerShell

کد زیر را در نرم افزار 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
    }
}

				
			

مهندس امیررضا بهرامی
نویسنده

مهندس حسین توکلی
ناظر کیفی

0 0 رای ها
امتیاز
guest
0 نظرات
بیشترین رأی
تازه‌ترین قدیمی‌ترین
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها