Computer >> 컴퓨터 >  >> 체계 >> Windows Server

BITS 및 PowerShell을 사용하여 신뢰할 수 없는 네트워크를 통해 대용량 파일 복사

일반적으로 로컬 및 글로벌 네트워크에서 파일은 SMB, FTP 또는 HTTP 프로토콜을 사용하여 장치 간에 전송됩니다. 이러한 모든 프로토콜의 문제는 대용량 파일의 다운로드를 다시 시작하는 데 문제가 있다는 것입니다. 이는 네트워크가 느리거나 신뢰할 수 없는 경우 더욱 악화될 수 있습니다. 또한 이러한 프로토콜을 사용하여 파일을 복사할 때 서버와 수신자 간에 사용 가능한 모든 대역폭이 사용되므로 네트워크 성능과 다른 네트워크 앱의 작동에 부정적인 영향을 미칠 수 있습니다(네트워크에서 올바른 QoS 정책을 구성하는 것이 항상 가능한 것은 아닙니다. 장비). 이 문서에서는 BITS 프로토콜 및 PowerShell을 사용하는 방법을 고려할 것입니다. 느리거나 불안정한 네트워크를 통해 대용량 파일을 복사합니다.

BITS 프로토콜

BITS(백그라운드 지능형 전송 서비스) 시스템 간에 파일을 전송하는 데 사용되는 Windows 서비스입니다. BITS 프로토콜을 사용하여 파일을 다운로드하고 업로드할 수 있습니다. 이 프로토콜은 자동 Windows 업데이트를 수행할 때(WSUS 서버에서 업데이트를 다운로드하는 경우 포함) 서버에서 파일을 수신할 때, SCCM 배포 지점 등에서 프로그램을 수신할 때 컴퓨터에서 사용됩니다.

BITS 프로토콜의 장점 :

  • BITS는 통신 채널의 사용 대역폭을 제어하고 다른 네트워크 앱 및 서비스의 작동에 영향을 미치지 않도록 할 수 있는 지능형 프로토콜입니다. BITS는 무료(할당되지 않은) 대역폭만 사용하고 전송 중에 데이터 속도를 동적으로 변경할 수 있습니다(다른 응용 프로그램이 네트워크 사용량을 늘리면 BITS 클라이언트가 네트워크를 통한 데이터 전송 속도를 줄일 수 있음).
  • 파일 다운로드는 사용자에게 투명한 백그라운드 모드에서 진행할 수 있습니다.
  • 다시 시작 모드의 BITS 작업은 컴퓨터와 클라이언트 간의 통신 채널이 끊어지거나 컴퓨터가 재부팅된 후에도 자동으로 계속됩니다.
  • 데이터 손실 없이 BITS로 다운로드를 일시 중지하거나 다시 시작할 수 있습니다. 참고 . 네트워크를 통한 파일 복사를 재개하는 기능은 robocopy.exe 유틸리티에서도 사용할 수 있습니다. 이 유틸리티를 사용하면 연결이 끊어진 경우 파일 다운로드를 재개할 수 있습니다.
  • BITS를 사용하면 다운로드 작업의 우선 순위를 관리할 수 있습니다.
  • 컴퓨터 간 파일 전송은 포트 80(HTTP) 또는 443(HTTPS)에서 발생하므로 방화벽에서 추가 포트를 열 필요가 없습니다. 예를 들어, SMB 프로토콜을 통해 파일을 복사할 때 사용되는 포트 445(SMB 1.0 프로토콜의 이전 버전에는 많은 취약점이 있음을 잊지 마십시오),
  • BITS 수신자와 서버 측에 배포된 IIS 서버가 반드시 필요한 것은 아닙니다.

따라서 BITS는 느리고 불안정한 네트워크(위성 채널, GPRS 연결 등)를 통해 대용량 파일을 전송하는 데 선호되는 프로토콜입니다.

BITS:OS 및 PowerShell 버전 요구 사항

BITS 프로토콜은 bitsadmin.exe 유틸리티를 사용하여 BITS 작업을 관리할 수 있습니다. 이 유틸리티는 계속 지원되지만 더 이상 사용되지 않습니다. BITS 작업을 관리하려면 특수 PowerShell cmdlet을 사용하는 것이 좋습니다.

이 시나리오에서 작업하려면 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*

BITS 및 PowerShell을 사용하여 신뢰할 수 없는 네트워크를 통해 대용량 파일 복사

보시다시피 8개의 cmdlet을 사용할 수 있습니다.

  • 비트 파일 추가
  • 완전한 비트 전송
  • Get-BitsTransfer
  • 비트 전송 제거
  • Resume-BitsTransfer
  • 비트 전송 설정
  • Start-BitsTransfer
  • Suspend-BitsTransfer

BITS를 사용한 컴퓨터 간 동기 파일 전송

Start-BitsTransfe r cmdlet을 사용하면 HTTP(예:Invoke-WebRequest cmdlet) 및 네트워크 공유 폴더(SMB 사용)를 통해 파일을 다운로드할 수 있습니다. BITS 프로토콜을 사용하여 지정된 URL에서 파일을 다운로드하고 로컬 디렉터리 C:\Temp에 저장하려면 다음 명령을 사용합니다.

Start-BitsTransfer –source https://10.1.1.18/erd65_32.iso -destination c:\temp
BITS 및 PowerShell을 사용하여 신뢰할 수 없는 네트워크를 통해 대용량 파일 복사

"이것은 BITS(Background Intelligent Transfer Service)를 사용하는 파일 전송입니다." 지정된 파일이 BITS를 사용하여 다운로드되고 있음을 의미합니다.

이 경우 cmdlet은 동기 모드에서 ISO 파일 다운로드를 시작했습니다. 다운로드는 파일 탐색기를 통해 또는 Copy-Item cmdlet을 사용하여 파일을 복사하는 일반적인 프로세스와 유사합니다. 다운로드 상태를 보여주는 진행률 표시줄이 화면에 표시됩니다. 컴퓨터를 다시 시작하면 다운로드가 재개되지 않습니다(전체 파일을 다시 다운로드해야 함).

비동기 모드에서 BITS를 사용하여 네트워크를 통해 대용량 파일 전송

BITS 다운로드는 비동기 모드에서도 시작할 수 있습니다. 이를 수행하려면 –asynchronous를 추가하세요. 위에 표시된 명령에 대한 매개변수입니다. 이 모드에서 어떤 일이 발생하면(서버 또는 클라이언트 재부팅, 통신 채널 중단 등) 소스가 복원된 후 BITS 작업이 자동으로 재개되고 연결이 중단된 순간부터 파일 다운로드가 계속됩니다. /P>

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

BITS 및 PowerShell을 사용하여 신뢰할 수 없는 네트워크를 통해 대용량 파일 복사

중요 . 기본적으로 Start-BitsTransfer는 전경 우선 순위(가능한 가장 높은 우선 순위)로 실행됩니다. 이 모드에서 시작된 다운로드는 채널 대역폭에 대해 다른 프로세스와 경쟁하게 됩니다. 이를 피하려면 명령의 인수로 다른 우선 순위를 명시적으로 설정해야 합니다. g., -우선순위 낮음:

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

비동기식 BITS 작업은 백그라운드에서 실행되며 파일 다운로드 프로세스는 화면에 표시되지 않습니다. BITS 작업의 상태는 Get-BitsTransfer를 사용하여 PowerShell 콘솔에서 얻을 수 있습니다. 명령:

Get-BitsTransfer | fl

BITS 및 PowerShell을 사용하여 신뢰할 수 없는 네트워크를 통해 대용량 파일 복사

이 명령은 전송 상태(이 경우 전송이 종료됨:전송됨), 전송된 바이트 수에 대한 정보, 총 파일 크기, 파일이 생성된 시간 및 작업이 완료된 시간을 반환합니다.

컴퓨터에서 실행 중인 모든 BITS 작업의 상태를 테이블 형식으로 볼 수 있습니다.

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

비동기 전송 모드를 사용할 때 TMP가 있는 임시 파일 확장자가 생성됩니다(기본적으로 Windows 탐색기에 숨겨져 있음). 소스 파일(소스 서버에 저장됨)로 변환하려면 Complete-BitsTransfer 명령을 실행합니다. :

Get-BitsTransfer | Complete-BitsTransfer

BITS 및 PowerShell을 사용하여 신뢰할 수 없는 네트워크를 통해 대용량 파일 복사

그런 다음 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

시스템 계정에서 실행 중인 BITS 작업은 취소할 수 없습니다(오류 0x80070005 "작업을 취소할 수 없습니다"). 이러한 작업을 취소하려면 SYSTEM에서 Remove-BitsTransfer 명령을 실행해야 합니다.

파일이 저장된 서버에 사용자 인증이 필요한 경우 다음 명령을 사용하여 리소스에 액세스하기 위한 자격 증명을 지정하는 창을 표시할 수 있습니다.

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

BITS 및 PowerShell을 사용하여 신뢰할 수 없는 네트워크를 통해 대용량 파일 복사

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
}

BITS 및 PowerShell을 사용하여 신뢰할 수 없는 네트워크를 통해 대용량 파일 복사

PowerShell 및 BITS를 사용하여 HTTP 서버에 파일을 업로드하는 방법

BITS를 사용하면 HTTP 서버에서 파일을 다운로드할 수 있을 뿐만 아니라 원격 웹 서버에 업로드할 수도 있습니다. 이렇게 하려면 Bits Server Extension이 있는 IIS 웹 서버 구성 요소는 대상 서버에 설치되어 있어야 합니다. 비트 업로드의 IIS 가상 디렉터리 설정에서 섹션에서 "클라이언트가 파일을 업로드하도록 허용 " 옵션.

<강한> BITS 및 PowerShell을 사용하여 신뢰할 수 없는 네트워크를 통해 대용량 파일 복사

익명 인증을 사용하는 경우 익명 사용자가 NTFS 권한 수준에서 디렉터리에 쓸 수 있도록 허용해야 합니다. 승인된 사용자로 파일 업로드를 수행하는 경우 업로드 폴더에 RW 권한을 부여해야 합니다.

BITS 프로토콜을 사용하여 HTTP 서버에 파일을 업로드하려면 다음 명령을 실행하십시오.

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

기본적으로 IIS에서는 최대 30MB의 파일을 업로드할 수 있습니다. 대용량 파일 업로드를 허용하려면 web.config 파일의 maxAllowContentLength 매개변수 값을 변경해야 합니다.

따라서 BITS 기능을 사용하는 것은 SMB 프로토콜을 사용하여 네트워크를 통해 복사하는 일반적인 파일에 대한 훌륭한 대안입니다. BITS 파일 전송 작업은 연결이 끊기거나 컴퓨터가 다시 시작되어도 수행되며 다른 앱에 방해가 되지 않고 대역폭을 많이 차지하지 않습니다. BITS 프로토콜은 WAN 네트워크를 통해 대용량 ISO 이미지 및 가상 머신 파일(vmdk, vhdx)을 전송하기 위한 최적의 솔루션이 될 수 있습니다.