ব্যাকআপগুলি তৈরি করতে কীভাবে একটি ভলিউম শেডো অনুলিপি ব্যবহার করবেন


11

পরিকল্পনাটি হ'ল যথেষ্ট বড়, আই / ও-ভারী ভলিউমের একটি ছায়া অনুলিপি তৈরি করা। এটি সফলভাবে পুনরুদ্ধারের জন্য সামঞ্জস্যপূর্ণ অবস্থায় থাকা কয়েকশ ফোল্ডার এবং শত-সহস্র ক্ষুদ্র ফাইলগুলিতে সংগঠিত একটি ফাইল সিস্টেম-ভিত্তিক ফুলটেক্সট সূচকযুক্ত এটি 350 জিবি be

বর্তমানে সূচকটি বন্ধ হয়ে যায়, ব্যাকআপের কাজটি চালিত হয় এবং তারপরে সূচক পুনরায় চালু হয়। ব্যাকআপের সময় সূচিতে এই ফলাফলগুলি কয়েক ঘন্টা অনুপলব্ধ থাকে। আমি ছায়া অনুলিপিটির মাধ্যমে ধারাবাহিক ব্যাকআপ তৈরি করতে চাই, আদর্শভাবে কোনও সূচককে মোটেও থামিয়ে না ফেলে।

সুতরাং, আমি সেই ভলিউমের জন্য শেডো অনুলিপিটি স্যুইচ করেছি এবং প্রতি রাতে একবার স্ন্যাপশট তৈরি করতে এটি একটি আলাদা ভলিউমে কনফিগার করেছি।

এখন আমি কিছুটা লোকসান হচ্ছি - আমি কীভাবে পুরো ছায়ার অনুলিপিটি অ্যাক্সেস করতে পারি, যাতে আমি একটি ব্যাকআপ নিতে পারি? আমি কেবল একটি পঠনযোগ্য ড্রাইভের কল্পনা করলাম যাতে ফাইলগুলি শেষ স্ন্যাপশটের সময় যেমন ছিল তেমন রয়েছে তবে জিনিসগুলি সম্পূর্ণ আলাদাভাবে কাজ করে।

ওএস হ'ল উইন্ডোজ সার্ভার 2003 এসপি 2, ব্যাকআপ সফ্টওয়্যারটি কমভল্ট গ্যালাক্সি 7.0।


সম্পাদনা : দ্রষ্টব্য যে - ইতিমধ্যে - দুটি উত্তর তৈরি করা হয়েছে যা একটি স্ক্রিপ্ট আকারে প্রয়োজনীয় কার্যকারিতা বাস্তবায়িত করে:


কম্বল্ট গ্যালাক্সিটি ইতিমধ্যে ব্যাকআপ তৈরি করতে ভিএসএস ব্যবহার করে না? আমি অস্পষ্টভাবে মনে রাখতে পারি যে ভিউএসএস ভিত্তিক ব্যাকআপ সলিউশন প্রয়োগকারী প্রথম বিক্রেতাদের মধ্যে কম্বল্ট ছিলেন
জিম বি

@ জিম: হ্যাঁ এটি করে তবে কেবল ফাইল-থেকে-ফাইলের ভিত্তিতে লক করা ফাইলের জন্য। আমার যা দরকার তা হ'ল ড্রাইভের সমস্ত ফাইল একটি সামঞ্জস্যপূর্ণ অবস্থায়। তবে এটি ঘটবে না যদি না) সূচকটি চালিত হয় না বা খ) আমার কাছে স্ন্যাপশটের একটি অনুলিপি রয়েছে, যেমন ভিএসএস করতে পারে।
তোমালাক

ভিএসএস এর মতো কাজ করে না - এটি একটি ভলিউম ছায়ার অনুলিপি। এটি যদি ভিএসএস ব্যবহার করে তবে কেবলমাত্র পার্থক্য হ'ল আপনার অবিচ্ছিন্ন স্ন্যাপগুলির ব্যাকআপ সফ্টওয়্যার অস্থায়ী স্ন্যাপগুলি ব্যবহার করে। আমি অনুমান করি যে কোনও অ্যাপ্লিকেশন প্রতি ফাইলের ভিত্তিতে মুছে ফেলা স্ন্যাপশট নিতে পারে তবে কেবলমাত্র আপনার ব্যাকআপগুলি অসঙ্গতিপূর্ণ হবে না এমনকি কোনও ডিফল্ট উইন্ডোজ ইনস্টল ব্যাকআপ নেওয়ার সময়ও দিনগুলির ক্রমেই আসবে। কীভাবে ভিএসএস প্রসেসিং কাজ করে তার একটি ডায়াগ্রামের জন্য এমএসডিএন.মাইক্রোসফট.এইন.উস / লিবারি / আআ 38384589 ( VS.85).aspx দেখুন । আমি কমভোল্টের সাথে যোগাযোগ করব এবং তারা আপনার ব্যাকআপ কনফিগারেশন সঠিক কিনা তা নিশ্চিত করতে পারে কিনা তা দেখতে চাই।
জিম বি

উত্তর:


10

তাই চাকা reinventing আত্মা মধ্যে, আমি আপনাকে উপস্থাপন Tomalak এর চমৎকার স্ক্রিপ্ট (উপরে দেখুন) কিন্তু সম্পূর্ণরূপে মধ্যে পুনর্লিখিত PowerShell !!! আমি এটি করার মূল কারণটি ছিল পাওয়ারশেলের বিস্ময়কর শক্তির সুসমাচার প্রচার করা but

এটি বেশিরভাগ ক্ষেত্রে অভিন্ন বৈশিষ্ট্যযুক্ত বৈশিষ্ট্যযুক্ত তবে আমি বিভিন্ন কারণে কিছু জিনিস কিছুটা ভিন্নভাবে প্রয়োগ করেছি। ডিবাগিং আউটপুট অবশ্যই আরও ভারবোজ।

একটি অতি গুরুত্বপূর্ণ বিষয় লক্ষণীয় হ'ল এই সংস্করণটি ওএস সংস্করণ এবং সাক্ষ্য সনাক্ত করে এবং vshadow.exe এর উপযুক্ত সংস্করণটিকে কল করে। Vshadow.exe এর কোন সংস্করণগুলি ব্যবহার করতে হবে, সেগুলি কোথায় পাবেন এবং কী নাম রাখবেন তা দেখানোর জন্য আমি নীচে একটি চার্ট অন্তর্ভুক্ত করেছি।


ব্যবহারের তথ্য এখানে:

VssSnapshot.ps1

Description:
  Create, mount or delete a Volume Shadow Copy Service (VSS) Shadow Copy (snapshot)

Usage:
  VssSnapshot.ps1 Create -Target <Path> -Volume <Volume> [-Debug]
  VssSnapshot.ps1 Delete -Target <Path> [-Debug]

Paremeters:
  Create  - Create a snapshot for the specified volume and mount it at the specified target
  Delete  - Unmount and delete the snapshot mounted at the specified target
  -Target - The path (quoted string) of the snapshot mount point
  -Volume - The volume (drive letter) to snapshot
  -Debug  - Enable debug output (optional)

Examples:
  VssSnapshot.ps1 Create -Target D:\Backup\DriveC -Volume C
  - Create a snapshot of volume C and mount it at "D:\Backup\DriveC"

  VssSnapshot.ps1 Delete -Target D:\Backup\DriveC
  - Unmount and delete a snapshot mounted at "D:\Backup\DriveC"

Advanced:
  VssSnapshot.ps1 create -t "c:\vss mount\c" -v C -d
  - Create a snapshot of volume C and mount it at "C:\Vss Mount\C"
  - example mounts snapshot on source volume (C: --> C:)
  - example uses shortform parameter names
  - example uses quoted paths with whitespace
  - example includes debug output

লিপিটি এখানে:

# VssSnapshot.ps1
# http://serverfault.com/questions/119120/how-to-use-a-volume-shadow-copy-to-make-backups/119592#119592

Param ([String]$Action, [String]$Target, [String]$Volume, [Switch]$Debug)
$ScriptCommandLine = $MyInvocation.Line
$vshadowPath = "."

# Functions
Function Check-Environment {
  Write-Dbg "Checking environment..."

  $UsageMsg = @'
VssSnapshot

Description:
  Create, mount or delete a Volume Shadow Copy Service (VSS) Shadow Copy (snapshot)

Usage:
  VssSnapshot.ps1 Create -Target <Path> -Volume <Volume> [-Debug]
  VssSnapshot.ps1 Delete -Target <Path> [-Debug]

Paremeters:
  Create  - Create a snapshot for the specified volume and mount it at the specified target
  Delete  - Unmount and delete the snapshot mounted at the specified target
  -Target - The path (quoted string) of the snapshot mount point
  -Volume - The volume (drive letter) to snapshot
  -Debug  - Enable debug output (optional)

Examples:
  VssSnapshot.ps1 Create -Target D:\Backup\DriveC -Volume C
  - Create a snapshot of volume C and mount it at "D:\Backup\DriveC"

  VssSnapshot.ps1 Delete -Target D:\Backup\DriveC
  - Unmount and delete a snapshot mounted at "D:\Backup\DriveC"

Advanced:
  VssSnapshot.ps1 create -t "c:\vss mount\c" -v C -d
  - Create a snapshot of volume C and mount it at "C:\Vss Mount\C"
  - example mounts snapshot on source volume (C: --> C:)
  - example uses shortform parameter names
  - example uses quoted paths with whitespace
  - example includes debug output
'@

  If ($Action -eq "Create" -And ($Target -And $Volume)) {
    $Script:Volume = (Get-PSDrive | Where-Object {$_.Name -eq ($Volume).Substring(0,1)}).Root
    If ($Volume -ne "") {
      Write-Dbg "Verified volume: $Volume"
    } Else {
      Write-Dbg "Cannot find the specified volume"
      Exit-Script "Cannot find the specified volume"
    }
    Write-Dbg "Argument check passed"
  } ElseIf ($Action -eq "Delete" -And $Target ) {
    Write-Dbg "Argument check passed"
  } Else {
    Write-Dbg "Invalid arguments: $ScriptCommandLine"
    Exit-Script "Invalid arguments`n`n$UsageMsg"
  }


  $WinVer = ((Get-WmiObject Win32_OperatingSystem).Version).Substring(0,3)
    Switch ($WinVer) {
    "5.2" {
      $vshadowExe = "vshadow_2003"
      $WinBit = ((Get-WmiObject Win32_Processor)[0]).AddressWidth
    }
    "6.0" {
      $vshadowExe = "vshadow_2008"
      $WinBit = (Get-WmiObject Win32_OperatingSystem).OSArchitecture
    }
    "6.1" {
      $vshadowExe = "vshadow_2008R2"
      $WinBit = (Get-WmiObject Win32_OperatingSystem).OSArchitecture
    }
    Default {
      Write-Dbg "Unable to determine OS version"
      Exit-Script "Unable to determine OS version"
    }
  }

  Switch ($WinBit) {
    {($_ -eq "32") -or ($_ -eq "32-bit")} {$vshadowExe += "_x86.exe"}
    {($_ -eq "64") -or ($_ -eq "64-bit")} {$vshadowExe += "_x64.exe"}
    Default {
      Write-Dbg "Unable to determine OS bitness"
      Exit-Script "Unable to determine OS bitness"
    }
  }

  $Script:vshadowExePath = Join-Path $vshadowPath $vshadowExe
  If (Test-Path $vshadowExePath) {
    Write-Dbg "Verified vshadow.exe: $vshadowExePath"
  } Else {
    Write-Dbg "Cannot find vshadow.exe: $vshadowExePath"
    Exit-Script "Cannot find vshadow.exe"
  }

  Write-Dbg "Environment ready"
}

Function Prepare-Target {
  Write-Log "Preparing target..."
  Write-Dbg "Preparing target $Target"


  If (!(Test-Path (Split-Path $Target -Parent))) {
  Write-Dbg "Target parent does not exist"
  Exit-Script "Invalid target $Target"
  }
  If ((Test-Path $Target)) {
    Write-Dbg "Target already exists"
    If (@(Get-ChildItem $Target).Count -eq 0) {
      Write-Dbg "Target is empty"
    } Else {
      Write-Dbg "Target is not empty"
      Exit-Script "Target contains files/folders"
    }
  } Else {
    Write-Dbg "Target does not exist. Prompting user..."
    $PromptYes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", "Create target folder"
    $PromptNo = New-Object System.Management.Automation.Host.ChoiceDescription "&No", "Do not create target folder"
    $PromptOptions = [System.Management.Automation.Host.ChoiceDescription[]]($PromptYes, $PromptNo)
    $PromptResult = $Host.UI.PromptForChoice("Create folder", "The target folder `"$target`" does not exist.`nWould you like to create the folder?", $PromptOptions, 0) 
    Switch ($PromptResult) {
      0 {
        Write-Dbg "User Accepted. Creating target..."
        $Null = New-Item -Path (Split-Path $Target -Parent) -Name (Split-Path $Target -Leaf) -ItemType "Directory"
      }
      1 {
        Write-Dbg "User declined. Exiting..."
        Exit-Script "Target does not exist"
      }
    }
  }
  Write-Log "Target ""$Target"" ready"
  Write-Dbg """$Target"" ready"
}

Function Create-Snapshot {
  Write-Log "Creating snapshot..."
  Write-Dbg "Creating snapshot of $Volume"
  $Cmd = "$vshadowExePath -p $Volume"
  $CmdResult = Run-Command $Cmd -AsString

  Write-Dbg "Snapshot created successfully"

  $SnapshotID = $CmdResult -Match 'SNAPSHOT ID = (\{[^}]{36}\})'
  If ($SnapshotID) {
    $SnapshotID = $Matches[1]
    Write-Dbg "SnapshotID: $SnapshotID"
    Write-Log "Snapshot $SnapshotID created"
  } Else {
    Write-Dbg "Unable to determine SnapshotID"
    Exit-Script "Unable to determine SnapshotID"
  }

  Return $SnapshotID
}

Function Mount-Snapshot ($SnapshotID) {
  Write-Log "Mounting snapshot..."
  Write-Dbg "Mounting $SnapshotID at ""$Target"""

  $Cmd = "$vshadowExePath `"-el=$SnapshotId,$Target`"" #Must use escaped quotes because Invoke-Expression gets all weird about curly braces
  $CmdResult = Run-Command $Cmd

  Write-Log "Snapshot $SnapshotID mounted at target ""$Target"""
  Write-Dbg "$SnapshotID mounted at ""$Target"""
}

Function Delete-Snapshot {
  Write-Log "Deleting snapshot..."
  Write-Dbg "Deleting snapshot at target ""$Target"""

  $SnapshotID = Get-SnapshotIdbyTarget

  $Cmd = "$vshadowExePath `"-ds=$SnapshotId`""
  $CmdResult = Run-Command $Cmd

  Write-Log "Snapshot $SnapshotID deleted at target ""$Target"""
  Write-Dbg "$SnapshotID deleted at ""$Target"""
}

Function Get-SnapshotIdbyTarget {
  Write-Dbg "Finding SnapshotID for $Target"

  $Cmd = "$vshadowExePath -q"
  $CmdResult = Run-Command $Cmd -AsString

  $TargetRegEx = '(?i)' + $Target.Replace('\','\\') + '\\?\r'
  $Snapshots = ($CmdResult.Split('*')) -Match $TargetRegEx | Out-String

  If ($Snapshots) {
    $Null = $Snapshots -Match '(\{[^}]{36}\})'
    $SnapshotID = $Matches[0]
  } Else {
    Write-Dbg "Unable to determine SnapshotID for target $Target"
    Exit-Script "Unable to determine SnapshotID"
  }  

  Write-Dbg "SnapshotID: $SnapshotID"

  Return $SnapshotID
}

Function Run-Command ([String]$Cmd, [Switch]$AsString=$False, [Switch]$AsArray=$False) {
  Write-Dbg "Running: $Cmd"

  $CmdOutputArray = Invoke-Expression $Cmd
  $CmdOutputString = $CmdOutputArray | Out-String
  $CmdErrorCode = $LASTEXITCODE

  If ($CmdErrorCode -eq 0 ) {
    Write-Dbg "Command successful. Exit code: $CmdErrorCode"
    Write-Dbg $CmdOutputString
  } Else {
    Write-Dbg "Command failed. Exit code: $CmdErrorCode"
    Write-Dbg $CmdOutputString
    Exit-Script "Command failed. Exit code: $CmdErrorCode"
  }

  If (!($AsString -or $AsArray)) {
    Return $CmdErrorCode
  } ElseIf ($AsString) {
    Return $CmdOutputString
  } ElseIf ($AsArray) {
    Return $CmdOutputArray
  }
}

Function Write-Msg ([String]$Message) {
  If ($Message -ne "") {
    Write-Host $Message
  }
}

Function Write-Log ([String]$Message) {
  Write-Msg "[$(Get-Date -Format G)] $Message"
}

Function Write-Dbg ([String]$Message) {
  If ($Debug) {
    Write-Msg ("-" * 80)
    Write-Msg "[DEBUG] $Message"
    Write-Msg ("-" * 80)
  }
}

Function Exit-Script ([String]$Message) {
  If ($Message -ne "") {
    Write-Msg "`n[FATAL ERROR] $Message`n"
  }
  Exit 1
}

# Main
Write-Log "VssSnapshot started"
Check-Environment

Switch ($Action) {
  "Create" {
    Prepare-Target
    $SnapshotID = Create-Snapshot
    Mount-Snapshot $SnapshotID
  }
  "Delete" {
    Delete-Snapshot
  }
}

Write-Log "VssSnapshot finished"

এখানে vshadow.exe সংস্করণগুলি ব্যবহার করতে হবে:

  1. উইন্ডোজ 2003 / 2003R2
    • ভলিউম শ্যাডো কপি পরিষেবা এসডিকে 7.2
    • x86: সি: \ প্রোগ্রাম ফাইলগুলি \ মাইক্রোসফ্ট \ ভিএসএসডিডি 72২ \ টেস্ট অ্যাপস \ ভিশাডো \ বিন \ রিলিজ-সার্ভার \ vshadow.exe
      • এর পুনঃনামকরণ: vshadow_2003_x86.exe
    • x64: আমি উইন্ডোজ 2003 এক্স 64 এর জন্য vshadow.exe এর একটি x64 সংস্করণ সনাক্ত করতে সক্ষম হইনি
  2. উইন্ডোজ 2008
    • উইন্ডোজ সার্ভার ২০০৮ এবং। নেট ফ্রেমওয়ার্ক 3.5 এর জন্য উইন্ডোজ এসডিকে
    • x86: সি: \ প্রোগ্রাম ফাইলগুলি \ মাইক্রোসফ্ট এসডিকে \ উইন্ডোজ \ v6.1 \ বিন \ ভার্সটুলস \ vshadow.exe
      • এর পুনঃনামকরণ: vshadow_2008_x86.exe
    • x64: সি: \ প্রোগ্রাম ফাইলগুলি \ মাইক্রোসফ্ট এসডিকে \ উইন্ডোজ \ v6.1 \ বিন \ x64 \ বনামের \ vshadow.exe
      • এর পুনঃনামকরণ: vshadow_2008_x64.exe
  3. উইন্ডোজ 2008 আর 2
    • মাইক্রোসফ্ট উইন্ডোজ এসডিকে উইন্ডোজ 7 এবং নেট ফ্রেমওয়ার্ক 4 এর জন্য
    • x86: সি: \ প্রোগ্রাম ফাইলগুলি (x86) \ মাইক্রোসফ্ট এসডিকে \ উইন্ডোজ \ v7.0A \ বিন \ ভার্সটুলস \ vshadow.exe
      • এর পুনঃনামকরণ: vshadow_2008R2_x86.exe
    • x64: সি: \ প্রোগ্রাম ফাইলগুলি (x86) \ মাইক্রোসফ্ট এসডিকে \ উইন্ডোজ \ v7.0A \ বিন \ x64 \ vsstools \ vshadow.exe
      • এর পুনঃনামকরণ: vshadow_2008R2_x64.exe

2
বিটিডব্লিউ ... আমি আর্কাইভকে একজন দরিদ্র ব্যক্তির ওপেন ফাইল ব্যাকআপ হিসাবে ব্যবহার করে আমাদের ব্যাকআপ সমাধানের অংশ হিসাবে এটি প্রয়োগ করতে সক্ষম হয়েছি। এজেন্ট লাইসেন্সের জন্য সার্ভারে $ 800 প্রদানের চেয়ে এটি আরও ভাল। কারও আগ্রহ থাকলে আমি এখানে পোস্ট করব।
জন হোমার

+1 এটি বেশ আশ্চর্যজনক। এটি পিএস এ পোর্ট করার জন্য সময় দেওয়ার জন্য (ভিবিএস সম্পর্কে আপনার ঘৃণা সত্ত্বেও) সময় দেওয়ার জন্য এবং এটি এখানে ভাগ করে নেওয়ার জন্য আপনাকে ধন্যবাদ। আমি আশা করি আরও বেশি লোক এটি কার্যকর বলে মনে করবে, কারণ এটি অবশ্যই একাধিক ভোটের প্রাপ্য।
তোমালাক

9

সুতরাং… আমি একটি সামান্য ভিবিএস স্ক্রিপ্ট নিয়ে কাজ করছি যা করতে পারে:

  • অবিরাম ভিএসএস স্ন্যাপশট নিন
  • এগুলি একটি ফোল্ডারে মাউন্ট করুন (যেখান থেকে আপনি ফাইলগুলি ব্যাকআপ করতে পারেন)
  • ভিএসএস স্ন্যাপশটগুলি আনমাউন্ট করুন

এটি মাইক্রোসফ্ট থেকে উপলব্ধ হিসাবে ভলিউম শ্যাডো কপি সার্ভিস এসডিকে .2.২ অংশ vshadow.exe( ডকুমেন্টেশন ) এর উপর নির্ভর করে । আমি এই সংস্করণটির সাথে কাজ করছি: " ভিএসএডএড.ও.এক্স.ই. ২.২ - ভলিউম শেডো কপির নমুনা ক্লায়েন্ট, কপিরাইট (সি) 2005 মাইক্রোসফ্ট কর্পোরেশন। "

মূলত, এই চারটি ভ্যাশডো কমান্ডের চারপাশে এটি একটি ঝরঝরে ছোট্ট মোড়ক:

vshadow.exe -q - সিস্টেমে সমস্ত ছায়া অনুলিপি তালিকাবদ্ধ করুন
vshadow.exe -p {ভলিউম তালিকা} - অবিচ্ছিন্ন ছায়া অনুলিপি পরিচালনা করে
vshadow.exe -el = {SnapID}, dir - ছায়ার অনুলিপিটিকে মাউন্ট পয়েন্ট হিসাবে প্রকাশ করুন
vshadow.exe -ds = {SnapID} - এই ছায়া অনুলিপি মুছে ফেলে

এখানে তার সহায়তা পর্দা:

ভিএসএস স্ন্যাপশট তৈরি / মাউন্ট সরঞ্জাম

ব্যবহার:
cscript / nologo VssSnapshot.vbs / লক্ষ্য: পথ {/ আয়তন: এক্স | / আনমাউন্ট} [/ ডিবাগ]

/ ভলিউম - স্ন্যাপশটে ভলিউমের ড্রাইভ লেটার
/ টার্গেট - স্ন্যাপশটটি মাউন্ট করার পাথ (পরম বা আপেক্ষিক)
/ ডিবাগ - ডিবাগ আউটপুট উপর সুইচ

উদাহরণ:
cscript / nologo VssSnapshot.vbs / টার্গেট: সি: \ ব্যাকআপ \ ড্রাইভডি / ভলিউম: ডি
cscript / nologo VssSnapshot.vbs / লক্ষ্য: সি: \ ব্যাকআপ \ ড্রাইভডি / আনমাউন্ট

ইঙ্গিত: নতুন স্ন্যাপশট নেওয়ার আগে আনমাউন্ট করার দরকার নেই।

এখানে কিছু নমুনা আউটপুট:

সি: \ ভেসস্ন্যাপশট> সিএসক্রিপ্ট / নোলোগো ভেসস্পট্যাপট.ভিবিএস / লক্ষ্য: মাউন্টপয়েন্টস \ ই / ভলিউম: ই
05/03/2010 17:13:04 ভিএসএস মাউন্ট পয়েন্ট প্রস্তুত ...
05/03/2010 17:13:04 মাউন্ট পয়েন্ট এখানে প্রস্তুত: সি: \ ভেসস্পটনা \ মাউন্টপয়েন্টস \ ই
05/03/2010 17:13:04 ভলিউমের জন্য ভিএসএস স্ন্যাপশট তৈরি করা: ই
05/03/2010 17:13:08 আইডি সহ স্ন্যাপশট তৈরি করা হয়েছে: ed 4ed3a907-c66f-4b20-bda0-9dcda3b667ec}
05/03/2010 17:13:08 ভিএসএস স্ন্যাপশটটি সফলভাবে মাউন্ট করা হয়েছে
05/03/2010 17:13:08 শেষ হয়েছে

সি: \ ভেসস্ন্যাপশট> সিএসক্রিপ্ট / নোলোগো ভেসস্পট্যাপট.ভিবিএস / লক্ষ্য: মাউন্টপয়েন্টস \ ই / আনমাউন্ট
05/03/2010 17:13:35 ভিএসএস মাউন্ট পয়েন্ট প্রস্তুত ...
05/03/2010 17:13:36 আর কিছুই করার নেই
05/03/2010 17:13:36 শেষ হয়েছে

এবং এখানে লিপি নিজেই। সাধারণ অস্বীকৃতি প্রযোজ্য: সফ্টওয়্যারটি যেমনটি সরবরাহ করা হয়, তেমন কোনও ওয়্যারেন্টি দিচ্ছি না, নিজের ঝুঁকিতে ব্যবহার করি, যদি কোনও কিছু দোষ দেওয়ার জন্য কেবলমাত্র ব্রেক করে তবে তা নিজেই। আমি এটি পুরোপুরি পরীক্ষা করেছি, যদিও এটি আমার পক্ষে ভাল কাজ করে। নীচের মন্তব্যগুলির মাধ্যমে আমাকে কোনও বাগ সম্পর্কে অবহিত করুন।

''# VssSnapshot.vbs
''# http://serverfault.com/questions/119120/how-to-use-a-volume-shadow-copy-to-make-backups/119592#119592
Option Explicit

Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")

''# -- MAIN SCRIPT -------------------------------------------
Dim args, snapshotId, targetPath, success
Set args = WScript.Arguments.Named
CheckEnvironment

Log "preparing VSS mount point..."
targetPath = PrepareVssMountPoint(args("target"))

If args.Exists("unmount") Then
  Log "nothing else to do"
ElseIf targetPath <> vbEmpty Then
  Log "mount point prepared at: " & targetPath
  Log "creating VSS snapshot for volume: " & args("volume")
  snapshotId = CreateVssSnapshot(args("volume"))

  If snapshotId <> vbEmpty Then
    Log "snapshot created with ID: " & snapshotId
    success = MountVssSnapshot(snapshotId, targetPath)
    If success Then
      Log "VSS snapshot mounted sucessfully"
    Else
      Die "failed to mount snapshot"
    End If
  Else
    Die "failed to create snapshot"
  End If
Else
  Die "failed to prepare mount point"
End If

Log "finished"

''# -- FUNCTIONS ---------------------------------------------
Function PrepareVssMountPoint(target) ''# As String
  Dim cmd, result, outArray
  Dim path, snapshot, snapshotId
  Dim re, matches, match

  PrepareVssMountPoint = VbEmpty
  target = fso.GetAbsolutePathName(target)

  If Not fso.FolderExists(fso.GetParentFolderName(target)) Then 
    Die "Invalid mount point: " & target
  End If

  ''# create or unmount (=delete existing snapshot) mountpoint
  If Not fso.FolderExists(target) Then
    If Not args.Exists("unmount") Then fso.CreateFolder target
  Else
    Set re = New RegExp
    re.MultiLine = False
    re.Pattern = "- Exposed locally as: ([^\r\n]*)"

    cmd = "vshadow -q"
    result = RunCommand(cmd, false)
    outarray = Split(result, "*")

    For Each snapshot In outArray
      snapshotId = ParseSnapshotId(snapshot)
      If snapshotId <> vbEmpty Then
        Set matches = re.Execute(snapshot)
        If matches.Count = 1 Then
          path = Trim(matches(0).SubMatches(0))
          If fso.GetAbsolutePathName(path) = target Then
            cmd = "vshadow -ds=" & snapshotId
            RunCommand cmd, true
            Exit For
          End If
        End If
      End If
    Next

    If args.Exists("unmount") Then fso.DeleteFolder target
  End If

  PrepareVssMountPoint = target
End Function

Function CreateVssSnapshot(volume) ''# As String
  Dim cmd, result

  If Not fso.DriveExists(volume) Then
    Die "Drive " & volume & " does not exist."
  End If

  cmd = "vshadow -p " & Replace(UCase(volume), ":", "") & ":"
  result = RunCommand(cmd, false)
  CreateVssSnapshot = ParseSnapshotId(result)
End Function

Function MountVssSnapshot(snapshotId, target) ''# As Boolean
  Dim cmd, result

  If fso.FolderExists(targetPath) Then
    cmd = "vshadow -el=" & snapshotId & "," & targetPath
    result = RunCommand(cmd, true)
  Else
    Die "Mountpoint does not exist: " & target
  End If

  MountVssSnapshot = (result = "0")
End Function

Function ParseSnapshotId(output) ''# As String
  Dim re, matches, match

  Set re = New RegExp
  re.Pattern = "SNAPSHOT ID = (\{[^}]{36}\})"
  Set matches = re.Execute(output)

  If matches.Count = 1 Then
    ParseSnapshotId = matches(0).SubMatches(0)
  Else
    ParseSnapshotId = vbEmpty
  End If
End Function

Function RunCommand(cmd, exitCodeOnly) ''# As String
  Dim shell, process, output

  Dbg "Running: " & cmd

  Set shell = CreateObject("WScript.Shell")

  On Error Resume Next
  Set process = Shell.Exec(cmd)
  If Err.Number <> 0 Then
    Die Hex(Err.Number) & " - " & Err.Description
  End If
  On Error GoTo 0

  Do While process.Status = 0
    WScript.Sleep 100
  Loop
  output = Process.StdOut.ReadAll

  If process.ExitCode = 0 Then 
    Dbg "OK"
    Dbg output
  Else
    Dbg "Failed with ERRORLEVEL " & process.ExitCode
    Dbg output
    If Not process.StdErr.AtEndOfStream Then 
      Dbg process.StdErr.ReadAll
    End If
  End If  

  If exitCodeOnly Then
    Runcommand = process.ExitCode
  Else
    RunCommand = output
  End If
End Function

Sub CheckEnvironment
  Dim argsOk

  If LCase(fso.GetFileName(WScript.FullName)) <> "cscript.exe" Then
    Say "Please execute me on the command line via cscript.exe!"
    Die ""
  End If

  argsOk = args.Exists("target")
  argsOk = argsOk And (args.Exists("volume") Or args.Exists("unmount"))

  If Not argsOk Then
    Say "VSS Snapshot Create/Mount Tool" & vbNewLine & _
        vbNewLine & _
        "Usage: " & vbNewLine & _
        "cscript /nologo " & fso.GetFileName(WScript.ScriptFullName) & _
          " /target:path { /volume:X | /unmount } [/debug]" & _
        vbNewLine & vbNewLine & _
        "/volume  - drive letter of the volume to snapshot" & _
        vbNewLine & _
        "/target  - the path (absolute or relative) to mount the snapshot to" & _
        vbNewLine & _
        "/debug   - swich on debug output" & _
        vbNewLine & vbNewLine & _
        "Examples: " & vbNewLine & _
        "cscript /nologo " & fso.GetFileName(WScript.ScriptFullName) & _
          " /target:C:\Backup\DriveD /volume:D" &  vbNewLine & _
        "cscript /nologo " & fso.GetFileName(WScript.ScriptFullName) & _
          " /target:C:\Backup\DriveD /unmount" & _
        vbNewLine & vbNewLine & _
        "Hint: No need to unmount before taking a new snapshot." & vbNewLine

    Die ""
  End If
End Sub

Sub Say(message)
  If message <> "" Then WScript.Echo message
End Sub

Sub Log(message)
  Say FormatDateTime(Now()) & " " & message
End Sub

Sub Dbg(message)
  If args.Exists("debug") Then 
    Say String(75, "-")
    Say "DEBUG: " & message
  End If
End Sub

Sub Die(message)
  If message <> "" Then Say "FATAL ERROR: " & message
  WScript.Quit 1
End Sub

আমি এই কারো সাহায্য করে আশা করি। সিসি বাই সা ব্যবহার করে নির্দ্বিধায় এটি ব্যবহার করুন । আমি কেবল আপনাকে জিজ্ঞাসা করি যে আপনি এখানে লিঙ্কটি অক্ষত রেখেছেন back


এবং আপনি কি এটি থেকে কোনও নতুন সিস্টেমে ডেটাটির সম্পূর্ণ বিপর্যয় পুনরুদ্ধার করেছেন? ব্যাকআপ নেওয়া সহজ। এটি থেকে পুনরুদ্ধার কখনও কখনও খুব বেশি না।
রব মোয়ার

@ রবার্ট: এই পদ্ধতির ক্ষেত্রে এটি অন্য যে কোনও ধরণের ব্যাকআপ হিসাবে সত্য true আমি মঞ্চের মাধ্যমে এটি অনুসরণ করার সাথে সাথে অনুসরণ করব।
টমলক

1
+1 কোনও জবাবের জন্য গ্রহণ না করার জন্য এবং এটির পক্ষে একটি কার্যকর সমাধান রয়েছে তা প্রমাণ করার জন্য চাপ দেওয়া হচ্ছে যে অন্য কিছু পোস্টার এটি দেওয়া যায় না বলে জবাব দেওয়ার পরিবর্তে প্রস্তাব দিতে পারে।
ক্রিস ম্যাগনসন

এটি কি একটি বিশ্রামযোগ্য ব্যাকআপ সরবরাহ করে? এটি কি রবোকপি দিয়ে ব্যবহার করা যাবে?
কেভ

1
@ কেভ: হ্যাঁ এটি করে তবে আপনার অবশ্যই এটি পরীক্ষা করা উচিত। যদি আপনার কোন সমস্যা মনে হয় তবে দয়া করে আমাকে এখানে বলুন। আপনি রোবকপি বা আপনার পছন্দ মতো অন্য কোনও সরঞ্জাম ব্যবহার করতে পারেন, মাউন্ট করা ভলিউম একটি সাধারণ ড্রাইভের মতো আচরণ করে।
টমলাক

6
  1. vssadmin list shadowsউপলব্ধ সমস্ত ছায়া অনুলিপি তালিকা করতে কমান্ডটি ব্যবহার করুন । আপনি এই মত একটি আউটপুট পাবেন ...
সি: \> ভ্যাসাদমিন তালিকার ছায়া
vssadmin 1.1 - ভলিউম শ্যাডো কপি পরিষেবা প্রশাসনিক কমান্ড-লাইন সরঞ্জাম
(সি) কপিরাইট 2001 মাইক্রোসফ্ট কর্পস।

ছায়া অনুলিপি সেট আইডির উপাদানসমূহ: 6 b6f6fb45-শয্যা -4b77-8f51-14292ee921f3}
   তৈরির সময় 1 টি ছায়া অনুলিপি রয়েছে: 9/25/2016 12:14:23 অপরাহ্ন
      ছায়া অনুলিপি আইডি: 19 321930d4-0442-4cc6-b2aa-ec47f21d0eb1}
         আসল ভলিউম: (সি:) \\? Ume ভলিউম {ad1dd231-1200-11de-b1df-806e6f6e6963 \
         ছায়া অনুলিপি ভলিউম: \\? LO গ্লোবাল্রোট \ ডিভাইস \ হার্ডডিস্কভলিউমশ্যাডো কপি 68
         মূল যন্ত্র: joshweb.josh.com
         পরিষেবা মেশিন: joshweb.josh.com
         সরবরাহকারী: 'মাইক্রোসফ্ট সফ্টওয়্যার ছায়া অনুলিপি সরবরাহকারী 1.0'
         প্রকার: ক্লায়েন্টএ্যাকসেসেবল
         বৈশিষ্ট্য: অবিচলিত, ক্লায়েন্টের অ্যাক্সেসযোগ্য, কোনও অটো রিলিজ নেই, লেখক নেই, ডিফারেনশিয়াল

ছায়া অনুলিপি সেট আইডির উপাদানসমূহ: 4 c4fd8646-57b3-4b39-be75-47dc8e7f881d}
   তৈরির সময় 1 টি ছায়া অনুলিপি রয়েছে: 8/25/2016 7:00:18 এএম
      ছায়া অনুলিপি আইডি: {fa5da100-5d90-493c-89b1-5c27874a23c6}
         আসল ভলিউম: (ই:) \\? Ume ভলিউম ec 4ec17949-12b6-11de-8872-00235428b661 \
         ছায়া অনুলিপি ভলিউম: \\? LO গ্লোব্রুট \ ডিভাইস \ হার্ডডিস্কভলিউমশ্যাডো কপি 3
         মূল যন্ত্র: joshweb.josh.com
         পরিষেবা মেশিন: joshweb.josh.com
         সরবরাহকারী: 'মাইক্রোসফ্ট সফ্টওয়্যার ছায়া অনুলিপি সরবরাহকারী 1.0'
         প্রকার: ক্লায়েন্টএ্যাকসেসেবল
         বৈশিষ্ট্য: অবিচলিত, ক্লায়েন্টের অ্যাক্সেসযোগ্য, কোনও অটো রিলিজ নেই, লেখক নেই, ডিফারেনশিয়াল

সি: \
  1. Shadow Copy Volumeআপনি যে ছায়া অনুলিপি চান তার নাম নোট করুন (ক্লিপবোর্ডে সবচেয়ে সহজ)।

  2. ছায়া অনুলিপি মাউন্ট করুন

উইন্ডোজ 2003 এ ...

আপনার কাছে যদি ইতিমধ্যে এটি না থাকে তবে 2003 এর জন্য আপনার রিসোর্স কিট সরঞ্জামগুলি ডাউনলোড করতে হবে।

কমান্ডটি প্রবেশ করান ...

লিঙ্কড সি: \ শ্যাডো \\? LO গ্লোবাল্রোট \ ডিভাইস \ হার্ডডিস্কভলিউমশ্যাডো কপি 69 \

... c:\shadowসেই পথটি যেখানে আপনি ছায়ার অনুলিপিটি দেখতে চান এবং \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy69এটি উপরে আপনার অনুলিপি করা নাম। নোট করুন যে আপনাকে অবশ্যই ছায়া অনুলিপিটির শেষে একটি ব্যাকস্ল্যাশ যুক্ত করতে হবে !

উইন্ডোজ 2008 এবং তারপরে ...

কমান্ডটি প্রবেশ করান ...

mklink c: \ ছায়া \\? LO গ্লোব্রুট \ ডিভাইস \ হার্ডডিস্কভলিউমশাদোকপি 69 69

... c:\shadowসেই পথটি যেখানে আপনি ছায়ার অনুলিপিটি দেখতে চান এবং \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy69এটি উপরে আপনার অনুলিপি করা নাম। নোট করুন যে আপনাকে অবশ্যই ছায়া অনুলিপিটির শেষে একটি ব্যাকস্ল্যাশ যুক্ত করতে হবে !

  1. XCOPYফাইলগুলি অ্যাক্সেস করতে আপনি যা চান তা (উইন্ডোজ এক্সপ্লোরার সহ বা ) ব্যবহার করুন c:\shadow

সুতরাং ... এটি স্বয়ংক্রিয় করার জন্য আপনার থেকে আউটপুটটি বিশ্লেষণ করা দরকার list shadows?
কেভ

আমি এই উত্তরটি পছন্দ করি তবে \\? LO GLOBALROOT ice ডিভাইস \ হার্ডডিস্কভলিউম শ্যাডো কপি_এন_ এর পরিবর্তে আমি মূল অংশ থেকে রেফারেন্সকৃত ফাইল এবং স্ন্যাপশটের সময়টি ব্যবহার করি (উদাহরণস্বরূপ) সি কে লিংক / ডিডি: \ টেম্পাউন্ট \\ লোকালহোস্ট \ সি $ \ @ GMT-2011.01.01-06.00.08 - দুর্ভাগ্যক্রমে এটি ম্যানুয়াল প্রক্রিয়া হতে পারে তবে জরুরী পরিস্থিতিতে এটি কাজ করে।
লুইস

2

আপনি কীভাবে ভিএসএস ফাইল সিস্টেমের সাথে কাজ করে তা ভুল বুঝছেন (এটি ডাটাবেসের সাথে কীভাবে কাজ করে তা সম্পূর্ণ আলাদা)। ফাইল সিস্টেমে, VSS "পূর্ববর্তী সংস্করণ" বৈশিষ্ট্য, যা একমাত্র snapshotting জন্য ব্যবহার করা হয় প্রয়োগ করতে ব্যবহৃত হয় পরিবর্তন ফাইল ও ফোল্ডারের ক্লায়েন্টে পূর্ববর্তী সংস্করণ ট্যাব মাধ্যমে পুনরুদ্ধারের জন্য সময় পূর্বনির্ধারিত বিন্দুতে। এই পরিবর্তনগুলি পুনরুদ্ধার সেট তৈরির জন্য ভলিউমের ডেটার সাথে একত্রীকরণ হয়। সুতরাং এটি পুনরুদ্ধার সম্পাদনের জন্য এখনও সেখানে বিদ্যমান আসল ভলিউমের উপর নির্ভরশীল, যা সঠিকভাবে ব্যাকআপ এবং পুনরুদ্ধারের উদ্দেশ্যে অপ্রয়োজনীয়।

আমি মনে করি আপনি কীভাবে এটি করতে চান তা থেকে আপনাকে পিছনে ফিরে আসতে হবে এবং আপনি কী করতে চান তা নিয়ে আবার চিন্তাভাবনা করা উচিত।

৩৫০ জিবি ডেটা সত্যিই খুব বেশি কিছু নয় এবং আমি বাজি রাখতে ইচ্ছুক যে যা প্রতিদিন ভিত্তিতে সক্রিয়ভাবে ব্যবহৃত হয় তার শতাংশটি বেশ কম low আপনি কি কেবল উইকএন্ডে পুরো ব্যাকআপ নিয়ে রাতের বেলা ডিফারেনশিয়াল ব্যাকআপগুলি করার কথা বিবেচনা করেছেন? অথবা "স্ন্যাপশট" পেতে (যা ব্যাক আপ করা হয়েছে) পেতে বিকল্প স্টোরেজে তফসিলযুক্ত ডিএফএস প্রতিলিপি ব্যবহার করছেন?


ডিফারেনশিয়াল ব্যাকআপের ক্ষেত্রে পরিবর্তনের পরিমাণটি প্রতিদিন প্রায় 60 জিবি is নিয়মিত পরিষেবা বিভ্রাট ব্যবহারকারীদের মাঝে মাঝে বিরক্ত করার পক্ষে যথেষ্ট, সম্ভবত "ঘন্টা" কিছুটা অতিরঞ্জিত ছিল। আমার বক্তব্যটি হ'ল - আমি যখন ভিএসএস স্ন্যাপশটটি টেপটিতে ব্যাকআপ করি, তখন ডেটা সফলভাবে পুনরুদ্ধার করার জন্য আমার প্রয়োজনীয় সমস্ত কিছুই থাকে। আমি এমন একটি স্ক্রিপ্টে কাজ করছি যা আমার বর্তমানে যা প্রয়োজন তা করে, এটি বেশ আশাব্যঞ্জক দেখাচ্ছে। হয়ে গেলে আমি এখানে এটি পোস্ট করব।
তোমালাক

@ এমএইচ: আমি আমার স্ক্রিপ্ট পোস্ট করেছি। এটি যে উদ্দেশ্যে করা হয়েছিল তার চেয়ে কিছুটা বড় হয়ে গেছে তবে এটি কার্যকরভাবে ব্যবহার করে এবং সুবিধাজনক। একবার দেখুন! :)
টমলক

1
-1 আপনি প্রশ্নের ভুল ব্যাখ্যা করেছেন। তিনি কোনও ব্যাকআপের উত্স হিসাবে ভিএসএসকে ব্যবহার করার চেষ্টা করছেন না, তিনি তার ফাইলগুলির টাইম স্ন্যাপশটের একটি পঠন পয়েন্ট তৈরি করতে এটি ব্যবহার করার চেষ্টা করছেন যা সে পরে কোনও টেপ ড্রাইভ বা অন্য কোনও মাধ্যমে স্থানান্তর করতে পারে। আমি বুঝতে পারি না কেন এই প্রযুক্তির জন্য এটি দুর্দান্ত ব্যবহারের মামলা নয়?
ক্রিস ম্যাগনসন

2

আশা করি এটি আপনি চান:

ডিস্কশো -s vssbackup.cfg

vssbackup.cfg:

set context persistent
set metadata E:\backup\result.cab
set verbose on
begin backup
     add volume C: alias ConfigVolume
     create
     EXPOSE %ConfigVolume% Y:
     # Y is your VSS drive
     # run your backup script here
     delete shadows exposed Y:
end backup

ডিস্কশডো হ'ল উইন্ডোজ সার্ভার ২০০৮, আফাইক
টমলক

@ জ্যাকবিন: আমি এমন একটি স্ক্রিপ্ট তৈরি করেছি যা উইন্ডোজ 2003 এর জন্য একই রকম কিছু করে, যেহেতু আমি এখনও পর্যন্ত ইন্টারনেটে বিশ্বাসযোগ্য কিছু পাইনি। আমার উত্তর দেখুন।
তোমালাক

আমার ক্ষমাপ্রার্থী, আমি জানি এটি ২০০৮ এর জন্য, তবে কোনওরকমভাবে আমার মাথায় এটি ছিল আপনার ২০০৮ আর 2 রয়েছে।
জ্যাকবিন

0

ভিএসএস এপিআই ব্যবহার করে, ভলিউমের একটি "স্ন্যাপশট" নেওয়া সম্ভব। তারপরে অনুলিপি করার জন্য আপনাকে সেই স্ন্যাপশটটি মাউন্ট করতে হবে। লাইভ ফাইল সিস্টেমে অন্য প্রক্রিয়াগুলি দ্বারা ফাইলগুলি কেবলমাত্র খোলা থাকা সত্ত্বেও আমি এই মৃত পণ্যটির সাথে পরিচিত যা এই কৌশলটি ডেটা প্রতিলিপি করতে ব্যবহার করে। ভিএসএস স্ন্যাপশটের ফাইলগুলি যদি ভিএসএস এপিআইয়ের সাথে সংহত না হয় এমন অ্যাপ্লিকেশনগুলির দ্বারা লিখিত হয় তবে তা স্ব-সামঞ্জস্যপূর্ণ কিনা তা সম্পর্কে বৈধ প্রশ্ন উত্থাপিত হতে পারে। অন্যান্য পণ্য থাকতে পারে যা একই ধরনের ক্ষমতা দেয়।


@ ফ্রেড: একটি ভিবিএস স্ক্রিপ্ট এবং মাইক্রোসফ্ট কমান্ড লাইন সরঞ্জাম ব্যবহার করে আমি এটি করেছি। আমার উত্তর দেখুন।
তোমালাক

-1

সংক্ষিপ্ত উত্তর: আপনি পারবেন না।

সামান্য দীর্ঘতর উত্তর: ছায়া অনুলিপি পরিষেবাটি ওপেন ফাইলগুলিকে ব্যাক আপ করার অনুমতি দেওয়ার জন্য এটির API এর মাধ্যমে প্রোগ্রামক্রমে ব্যবহার করা যেতে পারে তবে পরিষেবাটি সিস্টেমের সম্পূর্ণ স্ন্যাপশট তৈরি করে না, কেবল আংশিক স্ন্যাপশট।


2
আমি বিশ্বাস করতে অস্বীকার করি যে এটি অসম্ভব। আমার সম্পূর্ণ "সিস্টেমের স্ন্যাপশট" দরকার নেই, কেবলমাত্র একক ভলিউমের একটি পয়েন্ট-ইন-টাইম অনুলিপি। অভ্যন্তরীণভাবে ছায়ার অনুলিপি কীভাবে কাজ করে তা আমি মোটামুটিভাবে সচেতন এবং আমি সচেতন যে এটি ব্যবহারের ফাইলগুলির ব্যাকআপ তৈরি করতে ব্যবহার করা যেতে পারে (নেটে বিশিষ্ট উদাহরণগুলি হল এক্সচেঞ্জ বা এসকিউএল ডাটাবেসগুলি)।
তোমালাক

1
@ জন: দেখা যাচ্ছে যে আমি পারব। আমার উত্তর একবার দেখুন!
তোমালাক

আমি দেখতে পাচ্ছি আপনি ব্যাকআপ সফ্টওয়্যারের মতো এপিআই ব্যবহার করছেন। সুতরাং, আপনি যখন ভিএসএস পরিষেবাটি ব্যবহার করছেন তখন ভলিউম শেডো অনুলিপিটি ব্যবহার করা একেবারেই আলাদা। তা সত্ত্বেও, যদি এটি যা করতে চায় তবে তা আসলেই গুরুত্বপূর্ণ really সাবাশ.
জন গার্ডেনিয়ার্স

1
আপনার সংক্ষিপ্ত এবং দীর্ঘ উত্তর দুটিই ভুল এবং "ভলিউমের ছায়া অনুলিপি" শব্দটি এই শব্দটি কিছুটা অস্পষ্ট হলেও এমনকি ব্যবহারকারী কী সন্ধান করছে তা বোঝাতে যথেষ্ট হওয়া উচিত ছিল। en.wikedia.org/wiki/Shadow_Copy
ক্রিস ম্যাগনসন

1
আপনার অধিকার হতে পারে। আমি যখন বুঝতে পারি না যে আপনার উত্তর, "আপনি পারবেন না" কীভাবে সঠিক হয় যখন ওপি তার বর্ণিত যা করার উপায় খুঁজে পেয়েছিল। আপনার দীর্ঘ উত্তর জিজ্ঞাসা করা প্রশ্নের সাথে প্রাসঙ্গিক নয় কারণ এপিআই কেবল "আংশিক স্ন্যাপশট" দেওয়ার অনুমতি দেয় যদিও আপনি এখনও সময়ে একটি নির্দিষ্ট সময়ে পুরো ভলিউমের একটি উপস্থাপনা মাউন্ট করতে পারেন এবং ওপি পছন্দসই হিসাবে এটি ব্যাক আপ করতে পারেন। যদি আপনি নিজের আসল পোস্টে কী বোঝাতে চেয়েছিলেন তা যদি আপনি স্পষ্ট করতে পারতেন যে ওপি কী সম্পাদন করতে সক্ষম হয়েছে তা সম্বোধন করার জন্য এটি সম্পাদনা করা হয়েছে আমি তথ্যটি প্রাসঙ্গিক হলে সানন্দে ডাউন ভোটটি সরিয়ে ফেলব এবং একটি উত্সাহ যুক্ত করব।
ক্রিস ম্যাগনসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.