Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रणाली >> Windows Server

BITS और PowerShell का उपयोग करके अविश्वसनीय नेटवर्क पर बड़ी फाइलें कॉपी करना

एक नियम के रूप में, लोकल और ग्लोबल नेटवर्क में, फाइलें SMB, FTP या HTTP प्रोटोकॉल का उपयोग करके डिवाइसेज के बीच ट्रांसफर की जाती हैं। इन सभी प्रोटोकॉल की समस्या बड़ी फाइलों के डाउनलोड को रिज्यूम करने में कुछ परेशानियां हैं, जो और भी बदतर हो सकती हैं यदि नेटवर्क धीमा या अविश्वसनीय है। इसके अलावा, इन प्रोटोकॉल का उपयोग करके फाइलें कॉपी करते समय, सर्वर और प्राप्तकर्ता के बीच उपलब्ध सभी बैंडविड्थ उपयोग की जाती है, जो नेटवर्क प्रदर्शन और अन्य नेटवर्क ऐप्स के संचालन को नकारात्मक रूप से प्रभावित कर सकती है (नेटवर्क उपकरण पर सही QoS पॉलिसीज कॉन्फिगर करना हमेशा संभव नहीं होता)। इस लेख में, हम विचार करेंगे कि धीमे या अस्थिर नेटवर्क पर बड़ी फाइलें कॉपी करने के लिए BITS प्रोटोकॉल और PowerShell का उपयोग कैसे करें।

BITS प्रोटोकॉल

BITS (Background Intelligent Transfer service) फाइल्स को सिस्टम्स के बीच ट्रांसफर करने के लिए उपयोग की जाने वाली एक Windows सर्विस है। आप BITS प्रोटोकॉल का उपयोग करके फाइलें डाउनलोड और अपलोड कर सकते हैं। यह प्रोटोकॉल कंप्यूटर्स द्वारा सर्वर्स से फाइलें प्राप्त करते समय उपयोग किया जाता है जब ऑटोमेटिक Windows अपडेट्स परफॉर्म किए जाते हैं (WSUS सर्वर से अपडेट डाउनलोड करते समय मामले सहित), SCCM डिस्ट्रीब्यूशन पॉइंट्स से प्रोग्राम प्राप्त करते समय, आदि।

BITS प्रोटोकॉल के लाभ:

  • BITS एक इंटेलिजेंट प्रोटोकॉल है जो उपयोग किए गए कम्युनिकेशन चैनल के बैंडविड्थ को नियंत्रित करने और अन्य नेटवर्क ऐप्स और सर्विसेज के संचालन को प्रभावित नहीं करने में सक्षम है। BITS केवल फ्री (अनअलोकेटेड) बैंडविड्थ का उपयोग कर सकता है और ट्रांसफर के दौरान डेटा रेट को डायनामिकली बदल सकता है (यदि अन्य एप्लिकेशन नेटवर्क उपयोग बढ़ाते हैं, तो BITS क्लाइंट नेटवर्क पर डेटा ट्रांसफर रेट कम कर सकता है);
  • फाइल डाउनलोड बैकग्राउंड मोड में यूजर के लिए ट्रांसपेरेंट रूप से आगे बढ़ सकता है;
  • BITS जॉब रिज्यूम मोड में कंप्यूटर और क्लाइंट के बीच कम्युनिकेशन चैनल टूटने या कंप्यूटर रीबूट होने के बाद भी स्वचालित रूप से जारी रहेगा;
  • आप डेटा खोए बिना BITS द्वारा डाउनलोड को पॉज या रिज्यूम कर सकते हैं; नोट. नेटवर्क पर फाइल कॉपी को रिज्यूम करने की क्षमता robocopy.exe यूटिलिटी में भी उपलब्ध है, जो कनेक्शन खो जाने पर फाइल डाउनलोड को रिज्यूम करने की अनुमति देती है।
  • BITS आपको डाउनलोड जॉब्स की प्राथमिकताएं मैनेज करने की अनुमति देता है;
  • कंप्यूटर्स के बीच फाइल ट्रांसफर पोर्ट्स 80 (HTTP) या 443 (HTTPS) पर होता है, इसलिए आपको फायरवॉल पर अतिरिक्त पोर्ट्स खोलने की आवश्यकता नहीं होगी। उदाहरण के लिए, पोर्ट 445, जिसका उपयोग SMB प्रोटोकॉल पर फाइलें कॉपी करते समय किया जाता है (यह न भूलें कि पुराने SMB 1.0 प्रोटोकॉल संस्करण में कई वल्नरेबिलिटीज हैं);
  • BITS प्राप्तकर्ता और सर्वर साइड पर डिप्लॉयड IIS सर्वर आवश्यक नहीं है।

इस प्रकार, BITS धीमे और अस्थिर नेटवर्क (सैटेलाइट चैनल, GPRS कनेक्शन, आदि) पर बड़ी फाइलें ट्रांसफर करने के लिए बेहतर प्रोटोकॉल है।

BITS: OS और PowerShell संस्करण आवश्यकताएं

BITS प्रोटोकॉल Windows XP में दिखाई दिया, जिसमें bitsadmin.exe यूटिलिटी का उपयोग BITS कार्यों को मैनेज करने के लिए किया जा सकता था। यूटिलिटी अभी भी समर्थित है, लेकिन डिप्रिकेटेड है। BITS जॉब्स मैनेज करने के लिए, विशेष PowerShell cmdlets का उपयोग करना बेहतर है।

इस परिदृश्य के तहत काम करने के लिए, आपको Windows Vista या Windows Server 2008 से कम नहीं और PowerShell 2.0 या नए की आवश्यकता है। Windows 10 और Windows Server 2016/2012 R2 के आधुनिक संस्करण BITS को पूरी तरह से सपोर्ट करते हैं।

टिप. Windows Server 2003 का उपयोग करना भी संभव है। इस मामले में आपको KB 923845 अपडेट और PowerShell 2.0 इंस्टॉल करना होगा।

BITS सपोर्ट क्लाइंट और सर्वर दोनों तरफ आवश्यक है।

PowerShell का उपयोग करके BITS प्रोटोकॉल पर फाइल कैसे डाउनलोड करें?

मान लीजिए आप IIS HTTP सर्वर पर स्टोर की गई एक बड़ी ISO फाइल डाउनलोड करना चाहते हैं (https://10.1.1.18/erd65_32.iso). यह माना जाता है कि इस URL पर अनाम एक्सेस अनुमति है (बाद में हम ऑथेंटिकेशन के साथ URL एक्सेस पर विचार करेंगे)।

सबसे पहले, अपने PowerShell सेशन में BITS मॉड्यूल इम्पोर्ट करें:

Import-Module BitsTransfer

मॉड्यूल इम्पोर्ट होने के बाद, सभी उपलब्ध कमांड्स की सूची इस तरह प्रदर्शित की जा सकती है:

get-command *-BITS*

जैसा कि आप देख सकते हैं, 8 cmdlets उपलब्ध हैं:

  • Add-BitsFile
  • Complete-BitsTransfer
  • Get-BitsTransfer
  • Remove-BitsTransfer
  • Resume-BitsTransfer
  • Set-BitsTransfer
  • Start-BitsTransfer
  • Suspend-BitsTransfer

BITS का उपयोग करके कंप्यूटर्स के बीच सिंक्रोनस फाइल ट्रांसफर

Start-BitsTransfer cmdlet आपको HTTP(s) के माध्यम से फाइलें डाउनलोड करने की अनुमति देता है (Invoke-WebRequest cmdlet की तरह) साथ ही नेटवर्क शेयर्ड फोल्डर्स से (SMB के माध्यम से)। निर्दिष्ट URL से BITS प्रोटोकॉल का उपयोग करके फाइल डाउनलोड करने और इसे लोकल डायरेक्टरी C:\Temp में सेव करने के लिए, कमांड उपयोग करें:

Start-BitsTransfer –source https://10.1.1.18/erd65_32.iso -destination c:\temp

संदेश "This is a file transfer that uses the Background Intelligent Transfer service (BITS)” का अर्थ है कि निर्दिष्ट फाइल BITS का उपयोग करके डाउनलोड की जा रही है।

इस मामले में cmdlet ने ISO फाइल को सिंक्रोनस मोड में डाउनलोड करना शुरू किया। डाउनलोड File Explorer के माध्यम से सामान्य फाइल कॉपी प्रक्रिया या Copy-Item cmdlet का उपयोग करने के समान है। स्क्रीन पर एक प्रोग्रेस बार प्रदर्शित होता है, जो डाउनलोड स्थिति दिखाता है। यदि कंप्यूटर रीस्टार्ट होता है, तो डाउनलोड रिज्यूम नहीं होगा (आपको पूरी फाइल फिर से डाउनलोड करनी होगी)।

BITS का उपयोग करके असिंक्रोनस मोड में नेटवर्क पर बड़ी फाइलें ट्रांसफर करना

BITS डाउनलोड को असिंक्रोनस मोड में भी शुरू किया जा सकता है। ऐसा करने के लिए, ऊपर दिखाए गए कमांड में –asynchronous पैरामीटर जोड़ें। इस मोड में, यदि कुछ होता है (सर्वर या क्लाइंट रीबूट, कम्युनिकेशन चैनल में रुकावट, आदि), तो BITS जॉब सोर्स रिस्टोर होने के बाद स्वचालित रूप से रिज्यूम हो जाएगी और फाइल डाउनलोड कनेक्शन टूटने के क्षण से जारी रहेगी:

Start-BitsTransfer -source https://10.1.1.18/erd65_32.iso -destination c:\temp -asynchronous

महत्वपूर्ण. डिफ़ॉल्ट रूप से, Start-BitsTransfer Foreground प्राथमिकता (सबसे उच्च संभव) के साथ चलता है। यह माना जाता है कि इस मोड में शुरू किया गया डाउनलोड चैनल बैंडविड्थ के लिए अन्य प्रोसेस के साथ प्रतिस्पर्धा करेगा। इससे बचने के लिए, आपको कमांड के आर्गुमेंट के रूप में स्पष्ट रूप से कोई अन्य प्राथमिकता सेट करनी होगी, उदाहरण के लिए, -Priority low:

Start-BitsTransfer -source https://10.1.1.18/erd65_32.iso -destination c:\temp -asynchronous -Priority low

असिंक्रोनस BITS टास्क बैकग्राउंड में चलती है, और फाइल डाउनलोड प्रक्रिया स्क्रीन पर प्रदर्शित नहीं होती। BITS जॉब की स्थिति PowerShell कंसोल से Get-BitsTransfer कमांड का उपयोग करके प्राप्त की जा सकती है:

Get-BitsTransfer | fl

कमांड ट्रांसफर स्थिति लौटाती है (इस मामले में ट्रांसफर समाप्त: Transferred), ट्रांसफर किए गए बाइट्स की संख्या, कुल फाइल आकार, फाइल निर्माण का समय और टास्क पूरा होने का समय।

आप टेबल फॉर्म में कंप्यूटर पर चल रहे सभी BITS टास्क की स्थिति देख सकते हैं:

Get-BitsTransfer | select DisplayName, BytesTotal, BytesTransferred, JobState | Format-Table -AutoSize

असिंक्रोनस ट्रांसफर मोड का उपयोग करते समय, TMP एक्सटेंशन वाली एक अस्थायी फाइल बनाई जाती है (डिफ़ॉल्ट रूप से, यह Windows Explorer में छिपी होती है)। इसे सोर्स फाइल में कन्वर्ट करने के लिए (जो सोर्स सर्वर पर स्टोर है), कमांड Complete-BitsTransfer चलाएं:

Get-BitsTransfer | Complete-BitsTransfer

BITS डाउनलोड टास्क तब पूर्ण मानी जाती है और जॉब्स की सूची से हटा दी जाती है।

आप लोकल फाइल को रिमोट Windows फाइल सर्वर पर नेटवर्क शेयर्ड फोल्डर में अपलोड कर सकते हैं। ऐसा करने के लिए, निम्न कमांड उपयोग करें (सुविधा के लिए, आप कॉपी जॉब का नाम निर्दिष्ट कर सकते हैं):

Start-BitsTransfer -Source C:\iso\w10_1809.iso -Destination \\manch-fs1\iso -Asynchronous -DisplayName CopyISOtoMan

BITS टास्क को अस्थायी रूप से सस्पेंड करने के लिए, चलाएं:

Get-BitsTransfer -Name CopyISOtoMan | Suspend-BitsTransfer

BITS जॉब रिज्यूम करने के लिए, Resume-BitsTransfer cmdlet उपयोग करें:

Get-BitsTransfer -Name CopyISOtoMan | Resume-BitsTransfer -Asynchronous

Add-BitsFile cmdlet का उपयोग करके BITS टास्क में अतिरिक्त फाइलें जोड़ सकते हैं:

Get-BitsTransfer -Name CopyISOtoMan | Add-BitsFile -Source C:\iso\w10msu\* -Destination \\manch-fs1\iso -Asynchronous

कंप्यूटर पर सभी BITS डाउनलोड टास्क डिलीट करने के लिए (अन्य यूजर्स द्वारा शुरू की गई सहित), निम्न कमांड चलाएं:

Get-BitsTransfer -Allusers|Remove-BitsTransfer

आप System अकाउंट के तहत चल रहे BITS जॉब्स को कैंसिल नहीं कर सकते (एरर 0x80070005 "Unable to cancel job")। ऐसा टास्क कैंसिल करने के लिए, आपको Remove-BitsTransfer कमांड SYSTEM के तहत निष्पादित करने की आवश्यकता है।

यदि वह सर्वर जहां फाइल स्टोर है, यूजर ऑथेंटिकेशन की आवश्यकता है, तो निम्न कमांड रिसोर्स एक्सेस करने के लिए क्रेडेंशियल्स निर्दिष्ट करने के लिए एक विंडो दिखाने की अनुमति देगा:

Start-BitsTransfer -source https://10.1.1.18/erd65_32.iso -destination c:\temp -asynchronous -Priority low -Authentication NTLM -Credential Get-Credential

BITS टास्क के परिणामों को ट्रैक करना आसान बनाने के लिए, आप एक साधारण स्क्रिप्ट का उपयोग कर सकते हैं, जो टास्क प्रगति को ट्रैक करने और हर कुछ सेकंड में स्क्रीन पर डाउनलोड प्रतिशत प्रदर्शित करने की अनुमति देती है। डाउनलोड खत्म होने के बाद, स्क्रिप्ट स्वचालित रूप से TMP फाइल को सोर्स फॉर्मेट में कन्वर्ट करती है:

Import-Module BitsTransfer
$bitsjob = Start-BitsTransfer -Source https://10.1.1.18/erd65_32.iso -Destination c:\temp -Asynchronous
while( ($bitsjob.JobState.ToString() -eq 'Transferring') -or ($bitsjob.JobState.ToString() -eq 'Connecting') )
{
Write-host $bitsjob.JobState.ToString()
$Proc = ($bitsjob.BytesTransferred / $bitsjob.BytesTotal) * 100
Write-Host $Proc “%”
Sleep 3
}
Complete-BitsTransfer -BitsJob $bitsjob

BITS का उपयोग करके डायरेक्टरी कंटेंट कैसे कॉपी करें?

जैसा कि हमने पहले उल्लेख किया, BITS को वेब-सर्वर की आवश्यकता नहीं होती, और इसका मतलब है कि हम अन्य Windows कंप्यूटर्स या नेटवर्क शेयर्ड फोल्डर्स से सीधे फाइलें कॉपी कर सकते हैं:

Start-BitsTransfer -Source \\lon-rep01\os\RHEL4.8-x86_64-AS-DVD.iso -Destination c:\temp -Asynchronous

BitsTransfer रिकर्सिवली किसी विशिष्ट फोल्डर से सभी फाइल्स और फोल्डर्स या अन्य प्रोग्राम्स द्वारा उपयोग की जा रही फाइल्स को कॉपी नहीं कर सकता। निर्दिष्ट नेटवर्क शेयर्ड फोल्डर से सभी फाइल्स और सबडायरेक्टरीज कॉपी करने के लिए, इस स्क्रिप्ट का उपयोग करें (आप पहले चेक कर सकते हैं कि टारगेट डायरेक्टरी मौजूद है और इसे बना सकते हैं):

Import-Module BitsTransfer
$Source="\\lond-rep01\share\"
$Destination="c:\tmp\"
if ( -Not (Test-Path $Destination))
{
$null = New-Item -Path $Destination -ItemType Directory
}
$folders = Get-ChildItem -Name -Path $source -Directory -Recurse
$bitsjob = Start-BitsTransfer -Source $Source\*.* -Destination $Destination -asynchronous -Priority low
while( ($bitsjob.JobState.ToString() -eq 'Transferring') -or ($bitsjob.JobState.ToString() -eq 'Connecting') )
{
Sleep 4
}
Complete-BitsTransfer -BitsJob $bitsjob
foreach ($i in $folders)
{
$exists = Test-Path $Destination\$i
if ($exists -eq $false) {New-Item $Destination\$i -ItemType Directory}
$bitsjob = Start-BitsTransfer -Source $Source\$i\*.* -Destination $Destination\$i -asynchronous -Priority low
while( ($bitsjob.JobState.ToString() -eq 'Transferring') -or ($bitsjob.JobState.ToString() -eq 'Connecting') )
{
Sleep 4
}
Complete-BitsTransfer -BitsJob $bitsjob
}

PowerShell और BITS का उपयोग करके HTTP सर्वर पर फाइल कैसे अपलोड करें?

BITS के साथ, आप न केवल HTTP सर्वर से फाइल डाउनलोड कर सकते हैं, बल्कि इसे रिमोट वेब सर्वर पर अपलोड भी कर सकते हैं। ऐसा करने के लिए, टारगेट सर्वर पर Bits Server Extension कंपोनेंट के साथ IIS वेब सर्वर इंस्टॉल होना चाहिए। IIS वर्चुअल डायरेक्टरी की सेटिंग्स में Bits Uploads सेक्शन में, आपको "Allow clients to upload files" विकल्प सक्षम करना होगा।

यदि आप अनाम ऑथेंटिकेशन का उपयोग करते हैं, तो आपको NTFS परमिशन लेवल पर अनाम यूजर्स को डायरेक्टरी में लिखने की अनुमति देनी होगी। यदि फाइल अपलोड ऑथोराइज्ड यूजर्स के तहत किए जाते हैं, तो उन्हें अपलोड फोल्डर पर RW परमिशन देनी होगी।

BITS प्रोटोकॉल का उपयोग करके HTTP सर्वर पर फाइल अपलोड करने के लिए, निम्न कमांड चलाएं:

Start-bits –source c:\iso\winsrv2016.iso -destination https://10.1.1.18/MEDVImages/winsrv2016.iso –Transfertype Upload

कृपया ध्यान दें कि डिफ़ॉल्ट रूप से IIS आपको 30 MB तक की फाइलें अपलोड करने की अनुमति देता है। बड़ी फाइलें अपलोड करने की अनुमति देने के लिए, आपको web.config फाइल में maxAllowContentLength पैरामीटर का मान बदलना होगा।

इस प्रकार, BITS फीचर्स का उपयोग नेटवर्क पर फाइलें कॉपी करने के लिए SMB प्रोटोकॉल का उपयोग करने का एक बढ़िया विकल्प है। BITS फाइल ट्रांसफर टास्क कनेक्शन व्यवधान या कंप्यूटर रीस्टार्ट के बावजूद किया जाता है, और अन्य ऐप्स में हस्तक्षेप किए बिना बैंडविड्थ पर ज्यादा कब्जा नहीं करता। BITS प्रोटोकॉल WAN नेटवर्क पर बड़ी ISO इमेज और वर्चुअल मशीन फाइल्स (vmdk, vhdx) ट्रांसफर करने के लिए इष्टतम समाधान हो सकता है।

  1. Windows 11/10 में PowerShell का उपयोग करके फ़ाइलों को ज़िप और अनज़िप कैसे करें Windows 11/10 में PowerShell का उपयोग करके फ़ाइलों को ज़िप और अनज़िप कैसे करें

    अनिवार्य रूप से, ZIP फ़ाइल प्रारूप फ़ाइलों को एक फ़ाइल में संपीड़ित करके उनका आकार कम करता है। यह प्रक्रिया डिस्क स्थान बचाती है, डेटा एन्क्रिप्ट करती है, और दूसरों के साथ फ़ाइलें साझा करना आसान बनाती है। इस पोस्ट में, हम आपको दिखाएंगे कि Windows 11/10 में PowerShell उपयोगिता का उपयोग करके फ़ाइलों क

  1. अपने Mac पर बड़ी फ़ाइलों को त्वरित ढूंढें और हटाएं – एक चरण-दर-चरण गाइड अपने Mac पर बड़ी फ़ाइलों को त्वरित ढूंढें और हटाएं – एक चरण-दर-चरण गाइड

    स्पेस सफाई के लिए अपने Mac पर फ़ाइलें हटाना एक अच्छा विचार है। विशेष रूप से नियमित आधार पर बड़ी फ़ाइलें। यदि आप ऐसा करना भूल जाते हैं, तो आपका Mac आसानी से अव्यवस्थित हो जाएगा और अंततः प्रदर्शन समस्याओं का कारण बनेगा। जब आपका Mac स्टोरेज से बाहर चल रहा हो, तो यह जानना आवश्यक है कि कौन सी फ़ाइलें सबस

  1. पावरशेल से कुशलतापूर्वक फाइल और फोल्डर हटाएं: चरण-दर-चरण गाइड पावरशेल से कुशलतापूर्वक फाइल और फोल्डर हटाएं: चरण-दर-चरण गाइड

    अपनी सभी फाइलों और फोल्डरों को मैन्युअल रूप से हटाना एक परेशानी हो सकती है। लेकिन, यदि आप पावरशेल के आसपास अपना रास्ता जानते हैं, तो यह नहीं होना चाहिए। इस लेख में, हम पावरशेल का उपयोग करके अपनी विंडोज फाइलों और फोल्डरों को हटाने के विभिन्न तरीके प्रस्तुत करते हैं। पावरशेल से अपनी फाइलों और फोल्डरो