docs/integrations/sources/sftp-bulk.md
This page contains the setup guide and reference information for the SFTP Bulk source connector.
</HideInUI>The SFTP Bulk connector offers several features that are not available in the standard SFTP source connector:
To set up the SFTP connector, select one of the following authentication methods:
To set up key pair authentication, follow these steps:
Open your terminal or command prompt and use the ssh-keygen command to generate a new key pair.
:::note
If your operating system does not support the ssh-keygen command, you can use a third-party tool like PuTTYgen to generate the key pair instead.
:::
You will be prompted for a location to save the keys, and a passphrase to secure the private key. You can press enter to accept the default location and opt out of a passphrase if desired. Your two keys will be generated in the designated location as two separate files. The private key will usually be saved as id_rsa, while the public key will be saved with the .pub extension (id_rsa.pub).
Use the ssh-copy-id command in your terminal to copy the public key to the server.
ssh-copy-id <username>@<server_ip_address>
Be sure to replace your specific values for your username and the server's IP address.
:::note
Depending on factors such as your operating system and the specific SSH implementation your remote server uses, you may not be able to use the ssh-copy-id command. If so, please consult your server administrator for the appropriate steps to copy the public key to the server.
:::
You should now be able to connect to the server via the private key. You can test this by using the ssh command:
ssh <username>@<server_ip_address>
For more information on SSH key pair authentication, please refer to the official documentation.
Log into your Airbyte Cloud account.
Click Sources and then click + New source.
On the Set up the source page, select SFTP Bulk from the Source type dropdown.
Enter a name for the SFTP Bulk connector.
Choose a delivery method for your data.
Enter the Host Address.
Enter your Username
Enter your authentication credentials for the SFTP server (Password or Private Key). If using Private Key authentication, see the SSH Key Authentication Setup section below for detailed instructions.
In the section titled The list of streams to sync, enter a Stream Name. This is the name of the stream that is created in your destination. Add additional streams by clicking Add.
For each stream, select in the dropdown menu the File Type you wish to sync. Depending on the format chosen, you'll see a set of options specific to the file type. You can read more about specifics to each file type below.
(Optional) Provide a Start Date using the provided datepicker, or by entering the date in the format YYYY-MM-DDTHH:mm:ss.SSSSSSZ. Incremental syncs will only sync files modified/added after this date.
(Optional) Specify the Port. The default port for SFTP is 22. If your remote server is using a different port, enter it here.
(Optional) Determine the Folder Path. This determines the directory to search for files in, and defaults to "/". If you prefer to specify a specific folder path, specify the directory on the remote server to be synced. For example, given the file structure:
Root
| - logs
| | - 2021
| | - 2022
|
| - files
| | - 2021
| | - 2022
An input of /logs/2022 replicates only data contained within the specified folder, ignoring the /files and /logs/2021 folders. Leaving this field blank replicates all applicable files in the remote server's designated entry point.
Click Set up source to complete setup. A test runs to verify the configuration.
If your SFTP server uses SSH key-based authentication, you'll need to provide your private key file (.pem or similar format) during setup. Follow these steps to create and upload it correctly:
Locate your private key text. This is the block of text that begins with -----BEGIN OPENSSH PRIVATE KEY----- or -----BEGIN RSA PRIVATE KEY----- and ends with -----END OPENSSH PRIVATE KEY----- or -----END RSA PRIVATE KEY-----.
Create a PEM file:
ssh.pem.(Optional but recommended) If you're on macOS or Linux, set restricted permissions so only you can read it:
chmod 600 ssh.pem
Upload the file in Airbyte Cloud:
ssh.pem file.Once uploaded, Airbyte uses this file to authenticate securely with your SFTP server.
:::note The file must be in PEM format, a plain text file containing your private key between the BEGIN and END lines. Do not paste the key directly into the field; Airbyte requires a file upload. :::
Choose a delivery method for your data.
</FieldAnchor>If enabled, sends subdirectory folder structure along with source file names to the destination. Otherwise, files are synced by their names only. This option is ignored when file-based replication is not enabled.
Depending on your File Type selection, you are presented with a few configuration options specific to that file type.
You can specify a Glob pattern to select which files should be synced from the file system. Glob patterns work with all supported file types including CSV, Avro, JSONL, Parquet, Excel, and Document formats.
If your files are in a subfolder, include the folder in your glob pattern, like my_folder/my_prefix_*.csv. Use ** to match files recursively in subdirectories, like **/*.csv.
The SFTP Bulk source connector supports the following sync modes:
| Feature | Support | Notes |
|---|---|---|
| Full Refresh - Overwrite | ✅ | |
| Full Refresh - Append Sync | ✅ | |
| Incremental - Append | ✅ | |
| Incremental - Append + Deduped | ❌ |
This source provides a single stream per file with a dynamic schema. The current supported type files are Avro, CSV, JSONL, Parquet, and Document File Type Format.
When using the SFTP Bulk connector with the Copy Raw Files delivery method, individual files are subject to a maximum size limit of 1.5 GB (1,500,000,000 bytes) per file. This limitation applies to the raw file transfer process where files are copied without parsing their contents.
If you need to sync files larger than 1.5 GB, consider the following approach:
The Replicate Records delivery method is not a workaround for large file sizes. Replicate Records only works with structured file formats (CSV, JSONL, Parquet, Avro, etc.) that the connector can parse into individual records. It does not support unstructured files or binary formats, and files processed through Replicate Records are still subject to the same size limitations.
For more information about delivery methods and their limitations, see the Delivery Methods documentation.
| Version | Date | Pull Request | Subject |
|---|---|---|---|
| 1.9.0 | 2026-01-08 | 71225 | Promoting release candidate 1.9.0-rc.2 to a main version. |
| 1.9.0-rc.2 | 2026-01-05 | 71038 | Fix directory could match globs logic |
| 1.9.0-rc.1 | 2025-12-09 | 69167 | Fix OOM on check, update airbyte-cdk version |
| 1.8.9 | 2025-11-24 | Increase maxSecondsBetweenMessages to 3 hours | |
| 1.8.8 | 2025-11-10 | 69257 | Update error message when file exceeds size limit |
| 1.8.6 | 2025-10-14 | 67923 | Update dependencies |
| 1.8.5 | 2025-10-07 | 67234 | Update dependencies |
| 1.8.4 | 2025-09-30 | 66868 | Update dependencies |
| 1.8.3 | 2025-09-15 | 66197 | Update to CDK v7 |
| 1.8.2 | 2025-08-24 | 60498 | Update dependencies |
| 1.8.1 | 2025-05-10 | 58962 | Update dependencies |
| 1.8.0 | 2025-05-07 | 57514 | Adapt file-transfer records to latest protocol, requires platform >= 1.7.0, destination-s3 >= 1.8.0 |
| 1.7.8 | 2025-04-19 | 58448 | Update dependencies |
| 1.7.7 | 2025-04-05 | 57475 | Update dependencies |
| 1.7.6 | 2025-03-29 | 56898 | Update dependencies |
| 1.7.5 | 2025-03-22 | 54083 | Update dependencies |
| 1.7.4 | 2025-02-08 | 53570 | Update dependencies |
| 1.7.3 | 2025-02-01 | 52971 | Update dependencies |
| 1.7.2 | 2025-01-25 | 52470 | Update dependencies |
| 1.7.1 | 2025-01-18 | 43821 | Starting with this version, the Docker image is now rootless. Please note that this and future versions will not be compatible with Airbyte versions earlier than 0.64 |
| 1.7.0 | 2025-01-17 | 51611 | Promoting release candidate 1.7.0-rc.1 to a main version. |
| 1.7.0-rc.1 | 2025-01-16 | 50972 | Include option to not mirroring subdirectory structure. |
| 1.6.0 | 2024-12-17 | 49826 | Increase individual file size limit. |
| 1.5.0 | 2024-12-02 | 48434 | Add get_file method for file-transfer feature. |
| 1.4.0 | 2024-10-31 | 46739 | make private key an airbyte secret. |
| 1.3.0 | 2024-10-31 | 47703 | Update dependency to CDK v6 with ability to transfer files. |
| 1.2.0 | 2024-09-03 | 46323 | Update dependency to CDK v5 |
| 1.1.0 | 2024-08-14 | 44028 | Update dependency to CDK v4 |
| 1.0.1 | 2024-05-29 | 38703 | Avoid error on empty stream when running discover |
| 1.0.0 | 2024-03-22 | 36256 | Migrate to File-Based CDK. Manage dependencies with Poetry. |
| 0.1.2 | 2023-04-19 | 19224 | Support custom CSV separators |
| 0.1.1 | 2023-03-17 | 24180 | Fix field order |
| 0.1.0 | 2021-24-05 | 17691 | Initial version |