Нет, командная строка Windows ftp.exe
не поддерживает возобновление передачи.
Но вы можете просто автоматически загрузить любой небольшой сторонний портативный FTP-клиент командной строки, который поддерживает автоматическое возобновление, и использовать его.
Например, следующий код PowerShell загружает пакет сборки WinSCP .NET , извлекает его и запускает возобновляемую загрузку:
$winscp_assembly = "WinSCPnet.dll"
if (Test-Path $winscp_assembly)
{
Write-Host "WinSCP already downloaded"
}
else
{
$webclient = New-Object System.Net.WebClient
$winscp_version = "5.13.8"
$winscp_archive = "WinSCP-$winscp_version-Automation.zip"
Write-Host "Downloading $winscp_archive ..."
$url =
"https://sourceforge.net/projects/winscp/files/WinSCP/" +
$winscp_version + "/" + $winscp_archive + "/download"
$webclient.DownloadFile($url, $winscp_archive)
Write-Host "Done"
Write-Host "Extracting $winscp_archive ..."
$shell = New-Object -ComObject Shell.Application
$current_path = [string](Resolve-Path ".")
$winscp_archive_path = [string](Resolve-Path $winscp_archive)
$winscp_archive_folder = $shell.NameSpace($winscp_archive_path)
$current_folder = $shell.NameSpace($current_path)
$copy_options = 4 -bor 16 # SHCONTCH_NOPROGRESSBOX or SHCONTCH_RESPONDYESTOALL
$current_folder.CopyHere($winscp_archive_folder.Items(), $copy_options)
Write-Host "Done"
}
Add-Type -Path $winscp_assembly
$ftp_host = "ftp.example.com"
$ftp_path = "/target/path/"
$upload_path = "C:\big\file.dat"
Write-Host "Starting resumable upload of $upload_path to $ftp_host ..."
# Setup session options
$sessionOptions = New-Object WinSCP.SessionOptions
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
Protocol = [WinSCP.Protocol]::Ftp
HostName = $ftp_host
UserName = "username"
Password = "password"
}
$session = New-Object WinSCP.Session
$session.Open($sessionOptions)
$session.PutFiles($upload_path, $ftp_path).Check()
Для запуска скрипта PowerShell (upload.ps1
) используйте:
powershell.exe -File upload.ps1 -ExecutionPolicy Bypass
(Я автор WinSCP)
Другой вариант - реализовать резюме вручную, используя FtpWebRequest
.
См. Как продолжить или возобновить загрузку по FTP после прерывания интернета.
Опять же, вы можете использовать FtpWebRequest
из скрипта PowerShell. См. Загрузка файлов по FTP с помощью PowerShell.