{"id":2405,"date":"2024-06-02T16:58:44","date_gmt":"2024-06-02T13:58:44","guid":{"rendered":"https:\/\/www.fibacloud.com\/community\/tutorials\/?p=2405"},"modified":"2026-10-04T22:57:46","modified_gmt":"2026-10-04T19:57:46","slug":"how-to-transfer-files-using-ftp","status":"publish","type":"post","link":"https:\/\/www.fibacloud.com\/community\/tutorials\/en\/how-to-transfer-files-using-ftp\/","title":{"rendered":"File Transfers with FTP, FTPS and SFTP"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"2405\" class=\"elementor elementor-2405\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3b3c350 e-con-full e-flex e-con e-parent\" data-id=\"3b3c350\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-153fe3c elementor-widget elementor-widget-text-editor\" data-id=\"153fe3c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.21.0 - 08-05-2024 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\t<p>Protocol choice matters when transferring files: <strong>standard FTP does not encrypt passwords or file data.<\/strong> Use SFTP or FTPS with mandatory TLS, depending on what your server supports. SFTP is a separate protocol carried over SSH; FTPS adds TLS protection to FTP.<\/p>\n<h2>Prepare the account and connection details<\/h2>\n<p>This guide covers client uploads and downloads using an existing SFTP or FTPS account you are authorized to use. It does not install a server or change general access policies. A newly created cloud server does not necessarily include an FTP service or control-panel account.<\/p>\n<p>Obtain the protocol, hostname, port, username, permitted destination directory and authentication method from the administrator. For SFTP, independently verify the SSH host fingerprint. For FTPS, verify the expected hostname and trusted certificate. Use a task-specific account limited to the required directory; file transfer should not require <code>root<\/code> access.<\/p>\n<p>Back up existing site files before replacing them. Start with a small file in an empty test directory. Check quotas, available space and file-size limits.<\/p>\n<figure class=\"fc-editorial-figure\" data-fc-visual=\"20261004\" aria-labelledby=\"fc-editorial-caption-2405\"><a href=\"https:\/\/www.fibacloud.com\/community\/assets\/editorial-20261004\/fc-ftp-en-desktop-20261004.webp\" target=\"_blank\" rel=\"noopener\" aria-label=\"Open the full-size illustration\"><picture><source media=\"(max-width: 600px)\" srcset=\"https:\/\/www.fibacloud.com\/community\/assets\/editorial-20261004\/fc-ftp-en-mobile-20261004.webp\" width=\"720\" height=\"1140\"><img loading=\"lazy\" src=\"https:\/\/www.fibacloud.com\/community\/assets\/editorial-20261004\/fc-ftp-en-desktop-20261004.webp\" width=\"1440\" height=\"1160\" alt=\"Standard FTP does not encrypt control information or files. FTPS requires TLS for both control and data connections, with certificate verification. SFTP is a separate protocol over SSH, with host-key verification.\"  decoding=\"async\"><\/picture><\/a><figcaption id=\"fc-editorial-caption-2405\"><strong>FTP \/ FTPS \/ SFTP compared<\/strong> Standard FTP does not encrypt control information or files. FTPS requires TLS for both control and data connections, with certificate verification. SFTP is a separate protocol over SSH, with host-key verification.<details><summary>Text description of the illustration<\/summary><ol><li>Standard FTP sends credentials and files in cleartext; do not send credentials.<\/li><li>Require TLS for the FTPS control connection and private protection (PROT P) for data.<\/li><li>For SFTP, compare the SSH host fingerprint through a trusted channel.<\/li><li>Verify the server identity, account and destination before transfer; a port alone does not prove security.<\/li><\/ol><\/details><\/figcaption><\/figure>\n<h2>Compare FTP, FTPS and SFTP<\/h2>\n<table>\n<thead>\n<tr>\n<th>Protocol<\/th>\n<th>Transport protection<\/th>\n<th>Server identity<\/th>\n<th>Key requirement<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>FTP<\/td>\n<td>None in standard FTP<\/td>\n<td>No TLS\/SSH verification<\/td>\n<td>Do not send passwords or private data.<\/td>\n<\/tr>\n<tr>\n<td>FTPS<\/td>\n<td>TLS on control and data connections<\/td>\n<td>Certificate and hostname<\/td>\n<td>Reject unencrypted fallback and protect the data channel too.<\/td>\n<\/tr>\n<tr>\n<td>SFTP<\/td>\n<td>SSH transport<\/td>\n<td>SSH host key<\/td>\n<td>Compare the first fingerprint through a trusted channel.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>SFTP usually uses the SSH port. Explicit FTPS commonly begins on the FTP control port and opens additional data connections. <strong>A port number alone does not prove encryption.<\/strong> Use the protocol and port supplied by the administrator.<\/p>\n<h2>Connect with SFTP in FileZilla<\/h2>\n<p>Obtain FileZilla Client from its official source. Open <strong>File \u2192 Site Manager<\/strong> and create a new entry:<\/p>\n<ol>\n<li>Select <strong>SFTP \u2014 SSH File Transfer Protocol<\/strong>.<\/li>\n<li>Enter the verified hostname, port and assigned username.<\/li>\n<li>Select a password or key method accepted by the server. A private key stays on your device.<\/li>\n<li>Compare the first host key\u2019s type and fingerprint with the trusted console\/administrator record. Do not accept a mismatch.<\/li>\n<li>Confirm that the remote directory on the right is the intended destination, not another site with a similar name.<\/li>\n<\/ol>\n<p>A certificate warning and an SSH host-key warning are different checks. Expecting a TLS certificate in SFTP or an SSH key in FTPS confuses the protocols.<\/p>\n<h2>If the server uses FTPS<\/h2>\n<p>Select <strong>FTP \u2014 File Transfer Protocol<\/strong> in Site Manager and set encryption to <strong>Require explicit FTP over TLS<\/strong>, after confirming server support. If the server requires a different FTPS mode, follow the administrator\u2019s mode-specific port and client instructions.<\/p>\n<p>Verify the certificate hostname, validity period and trusted chain. Do not bypass an unknown certificate or hostname mismatch with a permanent exception. Encrypting the control connection is not enough: file data needs TLS as well. In FTPS, <code>PROT P<\/code> requests private protection for the data connection. Check the client log for a protected data connection.<\/p>\n<p>If directory listing works but transfers stall, have the administrator inspect the configured passive data-port range and network rules. Do not disable TLS or open every firewall port as a workaround.<\/p>\n<h2>Verify a small test transfer<\/h2>\n<p>The OpenSSH <code>sftp<\/code> example below assumes that the host key has already been verified. In an empty local working directory, ensure that the filename is unused and create a test file:<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d04fd48 elementor-widget elementor-widget-text-editor\" data-id=\"d04fd48\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<pre><code class=\"language-bash\">printf 'FibaCloud transfer check\\n' &gt; 'fc-transfer-test-\u00e7.txt'\nsha256sum 'fc-transfer-test-\u00e7.txt'\nsftp -o StrictHostKeyChecking=yes -P 22 deploy@server.example.com<\/code><\/pre>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c31cfeb elementor-widget elementor-widget-text-editor\" data-id=\"c31cfeb\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>On macOS without <code>sha256sum<\/code>, use <code>shasum -a 256<\/code>. Windows PowerShell provides <code>Get-FileHash -Algorithm SHA256<\/code> for local hashes.<\/p>\n<p>At the SFTP prompt, use the following sequence. Replace <code>uploads<\/code> with your assigned directory. <code>fc-transfer-check<\/code> must be a new, empty directory dedicated to this test; choose another name if it already exists.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-43cc324 elementor-widget elementor-widget-text-editor\" data-id=\"43cc324\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<pre><code class=\"language-text\">pwd\nls\ncd uploads\nmkdir fc-transfer-check\ncd fc-transfer-check\nput \"fc-transfer-test-\u00e7.txt\"\nget \"fc-transfer-test-\u00e7.txt\" \"fc-transfer-returned.txt\"\nbye<\/code><\/pre>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ca98823 elementor-widget elementor-widget-text-editor\" data-id=\"ca98823\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Compare the downloaded copy with the local original:<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4229648 elementor-widget elementor-widget-text-editor\" data-id=\"4229648\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<pre><code class=\"language-bash\">sha256sum 'fc-transfer-test-\u00e7.txt' 'fc-transfer-returned.txt'<\/code><\/pre>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9487eb0 elementor-widget elementor-widget-text-editor\" data-id=\"9487eb0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Both digests must match. In FileZilla, upload the same small file and download it under a different local name to perform the same check. An empty transfer queue or matching file sizes alone do not prove identical content.<\/p>\n<h2>Upload real files and recover from failures<\/h2>\n<p>After verifying the destination and test transfer, upload the real files. For a running application, use its supported versioned deployment and rollback process instead of overwriting active files directly. Transfer permissions must be compatible with the file ownership and access required by the application; do not work around permission problems with <code>777<\/code>.<\/p>\n<ul>\n<li><strong>Login rejected:<\/strong> Check the account, protocol, chosen key and account permissions.<\/li>\n<li><strong>Server identity changed:<\/strong> Verify the change with the administrator before removing a saved key or certificate check.<\/li>\n<li><strong>Permission denied:<\/strong> Confirm the destination and account scope; do not request access to another customer\u2019s directory.<\/li>\n<li><strong>Different hashes:<\/strong> Do not release the file. Investigate the interruption and client transfer settings, then repeat with a new test.<\/li>\n<li><strong>Interrupted transfer:<\/strong> Do not blindly resume a file used by the application. Preserve the last verified version and complete the replacement at a separate destination.<\/li>\n<\/ul>\n<p>Close the session when finished. Remove only the test file and empty test directory created by this procedure; leave other workspace files intact.<\/p>\n<h2>Sources<\/h2>\n<ul>\n<li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc2577.html\" rel=\"nofollow noopener\" target=\"_blank\">RFC 2577 \u2014 Standard FTP password and data security limitations<\/a><\/li>\n<li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc4217.html\" rel=\"nofollow noopener\" target=\"_blank\">RFC 4217 \u2014 TLS protection for FTP control and data connections<\/a><\/li>\n<li><a href=\"https:\/\/man.openbsd.org\/sftp\" rel=\"nofollow noopener\" target=\"_blank\">OpenSSH \u2014 sftp: transfer commands and client options<\/a><\/li>\n<li><a href=\"https:\/\/man.openbsd.org\/ssh\" rel=\"nofollow noopener\" target=\"_blank\">OpenSSH \u2014 ssh: host-fingerprint verification<\/a><\/li>\n<\/ul>\n<p class=\"fc-article-review-date\">Technical content and sources reviewed on October 4, 2026. Recheck the relevant official documentation when a version or provider changes.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Choose SFTP or TLS-required FTPS, verify the server identity, transfer files to the right directory and confirm the downloaded file matches.<\/p>\n","protected":false},"author":1,"featured_media":2571,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[250,252,254],"class_list":["post-2405","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials-en","tag-file-transfer","tag-filezilla","tag-ftp"],"lang":"en","translations":{"en":2405,"tr":1931},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/posts\/2405","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/comments?post=2405"}],"version-history":[{"count":10,"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/posts\/2405\/revisions"}],"predecessor-version":[{"id":2416,"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/posts\/2405\/revisions\/2416"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/media\/2571"}],"wp:attachment":[{"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/media?parent=2405"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/categories?post=2405"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fibacloud.com\/community\/tutorials\/wp-json\/wp\/v2\/tags?post=2405"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}