Transferetto.Protocols 2.0.4

dotnet add package Transferetto.Protocols --version 2.0.4
                    
NuGet\Install-Package Transferetto.Protocols -Version 2.0.4
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Transferetto.Protocols" Version="2.0.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Transferetto.Protocols" Version="2.0.4" />
                    
Directory.Packages.props
<PackageReference Include="Transferetto.Protocols" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Transferetto.Protocols --version 2.0.4
                    
#r "nuget: Transferetto.Protocols, 2.0.4"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Transferetto.Protocols@2.0.4
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Transferetto.Protocols&version=2.0.4
                    
Install as a Cake Addin
#tool nuget:?package=Transferetto.Protocols&version=2.0.4
                    
Install as a Cake Tool

Transferetto.Protocols

Transferetto.Protocols contains the FTP, FTPS, FXP, SFTP, SCP, and SSH implementations used by Transferetto.

The package provides the existing TransferettoClient protocol API together with FtpTransferEndpoint and SftpTransferEndpoint adapters for the provider-neutral Transferetto.Core copy engine.

Use the protocol API for protocol-specific operations such as FTP synchronization, SSH commands, shells, and tunnels. Use the endpoint adapters with TransferEngine.CopyAsync when data must move between FTP/SFTP, filesystems, S3, or Azure Blob Storage through one streaming contract.

Local directory transfers and synchronization reject symbolic links and Windows junctions instead of following them. Remote names must be representable on the destination filesystem; Windows downloads reject backslash traversal, alternate data streams, and reserved device names. The selected local root must be controlled by the caller, since path checks cannot prevent another process from replacing directories during a transfer.

Filesystem synchronization resolves TransferettoSyncOptions.PathComparison.Automatic from the selected destination directory. Windows per-directory settings, macOS volume settings, and Linux filesystem/per-directory casefold settings are queried without creating probe files. Unknown Unix filesystems use existing entries to detect case aliases and conservatively treat names without distinguishing evidence as case-insensitive. Receive registries keep those comparison decisions for the operation. Explicit comparison options affect planning, but cannot disable destination collision checks. Mirror plans reject a delete that addresses a file copied or retained through another spelling.

SFTP and FTP directory downloads freeze one validated listing of each directory before receiving content. Reads and recursion use the listed child name beneath the selected remote directory, so a server-provided full path cannot redirect them. SCP checks incoming members as they arrive. Distinct remote names that map to one destination, including case-equivalent directory names, fail instead of overwriting or silently skipping another source member. FTP manifest traversal lists literal directory names, including * and ? on compatible filesystems, and observes cancellation between entries and descents.

SFTP, FTP and SCP directory downloads stage incoming content privately on the destination filesystem and publish it only after every selected file succeeds. SCP also waits for the complete directory stream and successful remote command. Rejected names, incomplete content, cancellation, and transport failures discard the staged download. Publication preserves unrelated existing files, gives new files their destination directory's access rules, and rolls back replacements and newly created directories if a local write fails. FTP mirror deletions are deferred until receipt succeeds and are included in rollback. If rollback itself fails, the original error retains the rollback exception and recovery directory in its Data entries Transferetto.RollbackException and Transferetto.RecoveryDirectory, and backups remain available. Cleanup failures are recorded through transfer diagnostics without replacing the transfer result. This requires temporary space for incoming files, replaced or removed originals, and one adjacent publishing copy; it does not provide crash recovery or isolation from concurrent local writers, or a server-side snapshot of remote contents.

FTP retains its native skip/resume policy, verification options, transfer rules and configured excluded-file deletion policy. A failed FTP directory receive returns failed results without publishing staged files or mirror deletions; entries received successfully before another failure are marked failed with an explanation that the directory was not published. Entries skipped because they already exist or fail a rule remain skipped. SFTP raises its receive error after discarding staging. Successful directory calls return per-item results after publication. The separate synchronization APIs continue to execute their explicit plans incrementally.

FTP file, batch and directory downloads independently compare staged binary files with their advertised size, so a successful control reply cannot conceal a short data stream. Unknown remote sizes and ASCII transfers cannot provide this byte-length check; configured native checksum verification still applies. Disabling zero-byte downloads intentionally skips empty members and retains any corresponding local file. Progress events identify the selected destination rather than the private staging path.

Single-file FTP receives stage overwrite and resume data before replacing the destination. Batch downloads validate all destination names before receiving and preserve the selected error policy: None continues after a failed file, Stop returns after the failure, and Throw raises an FTP exception. Without DeleteProcessed, earlier completed files remain published while the failed file retains its original content. With DeleteProcessed, the whole batch is staged until it succeeds, so failure or cancellation discards incoming files and preserves originals instead of deleting previously overwritten destinations. Returned results distinguish failed, skipped and unattempted files; files withheld by batch rollback are reported as unpublished. FTP synchronization uses the protected single-file receive and retains its incremental plan behavior, stopping mirror deletions after a file fails.

ASCII FTP downloads use the native read-to-end path because newline conversion can expand content beyond its binary size. They report completion progress using the received length and check cancellation before and after each file; intermediate byte progress and mid-file cancellation callbacks are available for binary downloads. Batch error policies also cover ordinary local publication failures. If rollback itself fails, the original exception is raised with its recovery details regardless of the batch policy.

Endpoint synchronization preserves the source's exact name when inspecting and reading it. Literal backslashes are preserved on Unix destinations and rejected before writes on Windows destinations. Unrepresentable destination names fail explicitly instead of becoming a different directory hierarchy.

Known-host and FTPS certificate stores serialize updates across processes and replace the store atomically. Malformed stores fail closed; repair or replace the affected store explicitly. SSH SHA-256 pins preserve the case-sensitive Base64 digest, while MD5 hexadecimal pins accept either hex case.

SFTP file transfers stage replacement content before committing it. The asynchronous file APIs use asynchronous SFTP I/O, close remote handles on cancellation, and report upload progress as source bytes read. Shell readers check their deadline even during continuous output. Use TransferettoSshShellReadOptions.MaxCapturedCharacters to bound retained output and OutputProgress to consume arriving chunks; exceeding the capture limit throws IOException.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 is compatible.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Transferetto.Protocols:

Package Downloads
Transferetto

Umbrella package for the Transferetto core engine and supported transfer providers.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.0.4 78 10/24/2026
2.0.3 84 10/23/2026
2.0.2 87 10/23/2026
2.0.1 163 8/31/2026