एक नियम के रूप में, स्थानीय और वैश्विक नेटवर्क में, फ़ाइलों को SMB, FTP या HTTP प्रोटोकॉल का उपयोग करने वाले उपकरणों के बीच स्थानांतरित किया जाता है। इन सभी प्रोटोकॉल की समस्या बड़ी फ़ाइलों के डाउनलोड को फिर से शुरू करने में कुछ परेशानी है, जो नेटवर्क के धीमा या अविश्वसनीय होने पर और भी बदतर हो सकती है। इसके अलावा, इन प्रोटोकॉल का उपयोग करके फ़ाइलों की प्रतिलिपि बनाते समय, सर्वर और प्राप्तकर्ता के बीच सभी उपलब्ध बैंडविड्थ का उपयोग किया जाता है, जो नेटवर्क के प्रदर्शन और अन्य नेटवर्क ऐप्स के संचालन को नकारात्मक रूप से प्रभावित कर सकता है (नेटवर्क पर सही क्यूओएस नीतियों को कॉन्फ़िगर करना हमेशा संभव नहीं होता है) उपकरण)। इस लेख में, हम इस बात पर विचार करेंगे कि बिट्स प्रोटोकॉल और पावरशेल का उपयोग कैसे करें धीमी या अस्थिर नेटवर्क पर बड़ी फ़ाइलों की प्रतिलिपि बनाने के लिए।
बिट्स प्रोटोकॉल
बिट्स (बैकग्राउंड इंटेलिजेंट ट्रांसफर सर्विस) सिस्टम के बीच फ़ाइलों को स्थानांतरित करने के लिए उपयोग की जाने वाली एक विंडोज़ सेवा है। आप BITS प्रोटोकॉल का उपयोग करके फ़ाइलें डाउनलोड और अपलोड कर सकते हैं। एससीसीएम वितरण बिंदुओं आदि से प्रोग्राम प्राप्त करते समय स्वचालित विंडोज अपडेट (डब्ल्यूएसयूएस सर्वर से अपडेट डाउनलोड करते समय मामले सहित) करते समय सर्वर से फाइलें प्राप्त करते समय इस प्रोटोकॉल का उपयोग कंप्यूटर द्वारा किया जाता है।
बिट्स प्रोटोकॉल के लाभ :
- बिट्स एक बुद्धिमान प्रोटोकॉल है जो संचार चैनल के उपयोग किए गए बैंडविड्थ को नियंत्रित करने में सक्षम है और अन्य नेटवर्क ऐप्स और सेवाओं के संचालन को प्रभावित नहीं करता है। BITS केवल मुफ़्त (अनआवंटित) बैंडविड्थ का उपयोग कर सकता है और स्थानांतरण के दौरान डेटा दर को गतिशील रूप से बदल सकता है (यदि अन्य एप्लिकेशन नेटवर्क के उपयोग को बढ़ाते हैं, तो BITS क्लाइंट नेटवर्क पर डेटा ट्रांसफर दर को कम कर सकता है);
- फ़ाइल डाउनलोड उपयोगकर्ता के लिए पारदर्शी पृष्ठभूमि मोड में आगे बढ़ सकता है;
- रिज्यूमे मोड में बिट्स का काम अपने आप जारी रहेगा, भले ही कंप्यूटर और क्लाइंट के बीच संचार चैनल टूट गया हो, या कंप्यूटर के रिबूट होने के बाद;
- बिना डेटा खोए आप बिट्स द्वारा डाउनलोडिंग को रोक सकते हैं या फिर से शुरू कर सकते हैं; नोट . नेटवर्क पर फ़ाइल कॉपी करना फिर से शुरू करने की क्षमता robocopy.exe उपयोगिता में भी उपलब्ध है, जो आपको कनेक्शन खो जाने पर फ़ाइल को डाउनलोड करना फिर से शुरू करने की अनुमति देती है।
- बिट्स आपको डाउनलोड नौकरियों की प्राथमिकताओं को प्रबंधित करने की अनुमति देता है;
- कंप्यूटर के बीच फ़ाइल स्थानांतरण पोर्ट 80 (HTTP) या 443 (HTTPS) पर होता है, इसलिए आपको फ़ायरवॉल पर अतिरिक्त पोर्ट नहीं खोलने होंगे। उदाहरण के लिए, पोर्ट 445, जिसका उपयोग एसएमबी प्रोटोकॉल पर फाइलों की प्रतिलिपि बनाते समय किया जाता है (यह मत भूलो कि एसएमबी 1.0 प्रोटोकॉल के पुराने संस्करण में कई कमजोरियां हैं);
- बिट्स प्राप्तकर्ता और सर्वर साइड पर एक परिनियोजित IIS सर्वर आवश्यक नहीं है।
इस प्रकार, धीमी और अस्थिर नेटवर्क (उपग्रह चैनल, जीपीआरएस कनेक्शन, आदि) पर बड़ी फ़ाइलों को स्थानांतरित करने के लिए बिट्स बेहतर प्रोटोकॉल है।
बिट्स:ओएस और पावरशेल संस्करण आवश्यकताएँ
BITS प्रोटोकॉल Windows XP में दिखाई दिया, जिसमें bitsadmin.exe उपयोगिता का उपयोग बिट्स कार्यों को प्रबंधित करने के लिए किया जा सकता है। उपयोगिता अभी भी समर्थित है, लेकिन बहिष्कृत है। BITS नौकरियों को प्रबंधित करने के लिए, विशेष PowerShell cmdlets का उपयोग करना बेहतर होता है।
इस परिदृश्य में काम करने के लिए, आपको Windows Vista या Windows Server 2008 और PowerShell 2.0 या नए से कम के OS की आवश्यकता नहीं है। Windows 10 और Windows Server 2016/2012 R2 के आधुनिक संस्करण पूरी तरह से BITS का समर्थन करते हैं।
युक्ति . विंडोज सर्वर 2003 का भी उपयोग करना संभव है। ऐसे में आपको KB 923845 अपडेट और पावरशेल 2.0 इंस्टॉल करना होगा।क्लाइंट और सर्वर दोनों के लिए BITS समर्थन आवश्यक है।
PowerShell का उपयोग करके BITS प्रोटोकॉल पर फ़ाइल कैसे डाउनलोड करें?
मान लीजिए कि आप IIS HTTP सर्वर (https://10.1.1.18/erd65_32.iso पर संग्रहीत एक बड़ी ISO फ़ाइल डाउनलोड करना चाहते हैं। ) यह माना जाता है कि इस URL तक अनाम पहुंच की अनुमति है (बाद में हम प्रमाणीकरण के साथ URL तक पहुंच पर विचार करेंगे)।
सबसे पहले, अपने पावरशेल सत्र में बिट्स मॉड्यूल आयात करें:
Import-Module BitsTransfer
मॉड्यूल आयात होने के बाद, सभी उपलब्ध आदेशों की सूची निम्नानुसार प्रदर्शित की जा सकती है:
get-command *-BITS*
जैसा कि आप देख सकते हैं, 8 cmdlets उपलब्ध हैं:
- ऐड-बिट्सफाइल
- पूर्ण-बिट्स स्थानांतरण
- गेट-बिट्सट्रांसफर
- निकालें-BitsTransfer
- रिज्यूमे-बिट्सट्रांसफर
- सेट-बिट्सट्रांसफर
- स्टार्ट-बिट्सट्रांसफर
- सस्पेंड-बिट्सट्रांसफर
बिट्स का उपयोग करने वाले कंप्यूटर के बीच सिंक्रोनस फ़ाइल स्थानांतरण
प्रारंभ-BitsTransfe r cmdlet आपको HTTP(s) (जैसे Invoke-WebRequest cmdlet) के साथ-साथ नेटवर्क साझा फ़ोल्डरों (SMB के माध्यम से) से फ़ाइलें डाउनलोड करने की अनुमति देता है। BITS प्रोटोकॉल का उपयोग करके निर्दिष्ट URL से फ़ाइल डाउनलोड करने और इसे स्थानीय निर्देशिका C:\Temp में सहेजने के लिए, कमांड का उपयोग करें:
Start-BitsTransfer –source https://10.1.1.18/erd65_32.iso -destination c:\temp
संदेश "यह एक फाइल ट्रांसफर है जो बैकग्राउंड इंटेलिजेंट ट्रांसफर सर्विस (बिट्स) का उपयोग करता है" इसका मतलब है कि निर्दिष्ट फ़ाइल को बिट्स का उपयोग करके डाउनलोड किया जा रहा है।
इस स्थिति में cmdlet ने ISO फ़ाइल को सिंक्रोनस मोड में डाउनलोड करना शुरू कर दिया है। डाउनलोड फ़ाइल एक्सप्लोरर के माध्यम से या कॉपी-आइटम cmdlet का उपयोग करके फ़ाइल की प्रतिलिपि बनाने की सामान्य प्रक्रिया के समान है। स्क्रीन पर एक प्रगति पट्टी प्रदर्शित होती है, जो डाउनलोड स्थिति दिखाती है। यदि कोई कंप्यूटर पुनरारंभ होता है, तो डाउनलोड फिर से शुरू नहीं होगा (आपको पूरी फ़ाइल को फिर से डाउनलोड करने की आवश्यकता होगी)।
एसिंक्रोनस मोड में BITS के साथ नेटवर्क पर बड़ी फ़ाइलों को स्थानांतरित करना
बिट्स डाउनलोड को एसिंक्रोनस मोड में भी शुरू किया जा सकता है। ऐसा करने के लिए, –एसिंक्रोनस . जोड़ें ऊपर दिखाए गए आदेश के लिए पैरामीटर। इस मोड में, अगर कुछ होता है (सर्वर या क्लाइंट रीबूट, संचार चैनल में रुकावट, आदि), स्रोत के बहाल होने के बाद बिट्स का काम स्वचालित रूप से फिर से शुरू हो जाएगा और कनेक्शन बाधित होने के क्षण से फ़ाइल डाउनलोड जारी रहेगा:पी>
Start-BitsTransfer -source https://10.1.1.18/erd65_32.iso -destination c:\temp -asynchronous
महत्वपूर्ण . डिफ़ॉल्ट रूप से, Start-BitsTransfer अग्रभूमि प्राथमिकता (उच्चतम संभव एक) के साथ चलता है। यह माना जाता है कि इस मोड में शुरू किया गया डाउनलोड चैनल बैंडविड्थ के लिए अन्य प्रक्रियाओं के साथ प्रतिस्पर्धा करेगा। इससे बचने के लिए, आपको कमांड के तर्क के रूप में किसी अन्य प्राथमिकता को स्पष्ट रूप से सेट करना होगा, उदा। g., -प्राथमिकता कम:
Start-BitsTransfer -source https://10.1.1.18/erd65_32.iso -destination c:\temp -asynchronous -Priority low
एसिंक्रोनस बिट्स कार्य पृष्ठभूमि में चलता है, और फ़ाइल डाउनलोड प्रक्रिया स्क्रीन पर प्रदर्शित नहीं होती है। BITS कार्य की स्थिति Get-BitsTransfer का उपयोग करके PowerShell कंसोल से प्राप्त की जा सकती है आदेश:
Get-BitsTransfer | fl
आदेश स्थानांतरण स्थिति देता है (इस मामले में स्थानांतरण समाप्त हो गया है:स्थानांतरित), स्थानांतरित बाइट्स की संख्या, कुल फ़ाइल आकार, फ़ाइल बनाने का समय और कार्य पूरा होने का समय के बारे में जानकारी।
आप कंप्यूटर पर चल रहे सभी बिट्स कार्यों की स्थिति तालिका के रूप में देख सकते हैं:
Get-BitsTransfer | select DisplayName, BytesTotal, BytesTransferred, JobState | Format-Table -AutoSize
अतुल्यकालिक स्थानांतरण मोड का उपयोग करते समय, TMP . के साथ एक अस्थायी फ़ाइल एक्सटेंशन बनाया जाता है (डिफ़ॉल्ट रूप से, यह विंडोज एक्सप्लोरर में छिपा होता है)। इसे स्रोत फ़ाइल में बदलने के लिए (जो स्रोत सर्वर पर संग्रहीत है), कमांड चलाएँ पूर्ण-बिट्सट्रांसफर :
Get-BitsTransfer | Complete-BitsTransfer
तब बिट्स डाउनलोड कार्य को पूर्ण माना जाता है और नौकरियों की सूची से हटा दिया जाता है।
आप किसी दूरस्थ 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
कंप्यूटर पर सभी बिट्स डाउनलोड कार्यों को हटाने के लिए (अन्य उपयोगकर्ताओं द्वारा शुरू किए गए कार्यों सहित), निम्न आदेश चलाएँ:
Get-BitsTransfer -Allusers|Remove-BitsTransfer
आप सिस्टम खाते के अंतर्गत चल रहे BITS कार्य को रद्द नहीं कर सकते (त्रुटि 0x80070005 "नौकरी रद्द करने में असमर्थ")। ऐसे कार्य को रद्द करने के लिए, आपको सिस्टम के अंतर्गत रिमूव-बिट्सट्रांसफर कमांड को निष्पादित करने की आवश्यकता है।
यदि सर्वर, जहां फ़ाइल संग्रहीत है, को उपयोगकर्ता प्रमाणीकरण की आवश्यकता है, तो निम्न आदेश संसाधन तक पहुंचने के लिए क्रेडेंशियल निर्दिष्ट करने के लिए एक विंडो दिखाने की अनुमति देगा:
Start-BitsTransfer -source https://10.1.1.18/erd65_32.iso -destination c:\temp -asynchronous -Priority low -Authentication NTLM -Credential Get-Credential
बिट्स कार्य के परिणामों को ट्रैक करना आसान बनाने के लिए, आप एक साधारण स्क्रिप्ट का उपयोग कर सकते हैं, जो कार्य प्रगति को ट्रैक करने की अनुमति देता है और हर कुछ सेकंड में स्क्रीन पर डाउनलोड प्रतिशत प्रदर्शित करता है। डाउनलोड समाप्त होने के बाद, स्क्रिप्ट स्वचालित रूप से 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
बिट्स का उपयोग करके निर्देशिका सामग्री की प्रतिलिपि कैसे करें?
जैसा कि हमने पहले ही उल्लेख किया है, बिट्स को वेब-सर्वर की आवश्यकता नहीं होती है, और इसका अर्थ है कि हम अन्य विंडोज़ कंप्यूटरों या नेटवर्क साझा फ़ोल्डरों से सीधे फाइलों की प्रतिलिपि बना सकते हैं:
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 सर्वर पर फ़ाइल कैसे अपलोड करें?
बिट्स के साथ, आप न केवल एक HTTP सर्वर से एक फ़ाइल डाउनलोड कर सकते हैं, बल्कि इसे एक दूरस्थ वेब सर्वर पर भी अपलोड कर सकते हैं। ऐसा करने के लिए, आईआईएस वेब सर्वर बिट्स सर्वर एक्सटेंशन . के साथ घटक लक्ष्य सर्वर पर स्थापित होना चाहिए। बिट्स अपलोड . में IIS वर्चुअल निर्देशिका की सेटिंग में अनुभाग में, आपको "क्लाइंट को फ़ाइलें अपलोड करने की अनुमति दें . सक्षम करने की आवश्यकता है "विकल्प।
<मजबूत>
यदि आप अनाम प्रमाणीकरण का उपयोग करते हैं, तो आपको अनाम उपयोगकर्ताओं को NTFS अनुमति स्तर पर निर्देशिका में लिखने की अनुमति देनी चाहिए। यदि फ़ाइल अपलोड अधिकृत उपयोगकर्ताओं के अधीन किया जाता है, तो उन्हें अपलोड फ़ोल्डर को RW अनुमतियाँ प्रदान करने की आवश्यकता होती है।
BITS प्रोटोकॉल का उपयोग करके किसी HTTP सर्वर पर फ़ाइल अपलोड करने के लिए, निम्न कमांड चलाएँ:
Start-bits –source c:\iso\winsrv2016.iso -destination https://10.1.1.18/MEDVImages/winsrv2016.iso –Transfertype Upload
इस प्रकार, बिट्स सुविधाओं का उपयोग करना एसएमबी प्रोटोकॉल का उपयोग करके नेटवर्क पर कॉपी करने वाली सामान्य फ़ाइल का एक बढ़िया विकल्प है। BITS फ़ाइल स्थानांतरण कार्य कनेक्शन व्यवधान या कंप्यूटर पुनरारंभ होने के बावजूद किया जाता है, और अन्य ऐप्स के साथ हस्तक्षेप किए बिना बैंडविड्थ पर अधिक कब्जा नहीं करता है। BITS प्रोटोकॉल WAN नेटवर्क पर बड़ी ISO छवि और वर्चुअल मशीन फ़ाइलों (vmdk, vhdx) को स्थानांतरित करने के लिए इष्टतम समाधान हो सकता है।