Skip to main content
The SFTP source backs up files from a remote server via SSH File Transfer Protocol. This allows you to back up remote servers without installing Cloudstic on them.

Basic Usage

Back up a remote directory via SFTP:

Configuration Options

Required Flags

Authentication Flags

Optional Flags

Authentication Methods

Cloudstic supports three SSH authentication methods: Use an SSH private key for authentication:

2. Password

Use password authentication:
Avoid hardcoding passwords in scripts. Use environment variables or SSH keys instead.

3. SSH Agent (Automatic)

If SSH_AUTH_SOCK is set, Cloudstic automatically uses your SSH agent:

Examples

Backup Web Server

Back up a web server’s document root:

Backup with Custom Port

Connect to a non-standard SSH port:

Backup with Exclusions

Exclude cache and temporary files:

Multiple Server Backups

Back up multiple servers sequentially:

How It Works

Connection Process

1

Establish SSH connection

Cloudstic connects to the SFTP server using the provided credentials.
2

Authenticate

Authentication is attempted in order:
  1. Private key (if specified)
  2. Password (if specified)
  3. SSH agent (if available)
3

Initialize SFTP session

An SFTP session is created over the SSH connection.
4

Walk directory tree

The remote directory is recursively scanned. File permissions (mode bits) and numeric ownership (uid/gid) are captured from the SFTPv3 ATTRS response. Birth time, file flags, and extended attributes are not available over SFTP.
5

Stream files

Files are streamed over SFTP as they are backed up.

File Identification

SFTP files are identified by their relative path from the source root:
  • Source path: /home/user/data
  • File: /home/user/data/reports/Q1.pdf
  • File ID: reports/Q1.pdf

Source Information

Each snapshot records:
  • Type: sftp
  • Account: user@host (e.g., deploy@web-server.com)
  • Path: Remote directory path (e.g., /var/www/html)

Security Considerations

SSH Host Key Verification

By default, Cloudstic strictly validates the remote server’s SSH host key against your local known_hosts file (defaulting to ~/.ssh/known_hosts). If the host key is not found or does not match, the connection will fail. For production use, you should ensure the server’s host key is present in your known_hosts file. You can add it using ssh-keyscan:

Custom known_hosts file

If your environment uses a non-standard location for known hosts, use the -source-sftp-known-hosts flag:
To skip host key verification entirely (e.g. for initial testing or internal networks where you trust the route), use the -source-sftp-insecure flag:
Using -source-sftp-insecure makes the connection vulnerable to Man-in-the-Middle (MitM) attacks. Only use this in trusted environments.

Credential Management

Best practices for managing SFTP credentials:
1

Use SSH keys instead of passwords

Generate a dedicated key pair:
2

Use environment variables

Avoid hardcoding credentials:
3

Restrict key permissions

Ensure private keys are secure:
4

Use a dedicated backup user

Create a read-only user for backups:

Performance Considerations

Network Overhead

SFTP backups are slower than local backups due to:
  • Network latency
  • SSH encryption overhead
  • Remote filesystem access

Typical Performance

  • Small files: 100-500 files/second
  • Large files: Limited by network bandwidth
  • Network: 10-100 MB/s depending on connection

Optimizing SFTP Backups

1

Use exclude patterns

Reduce data transfer:
2

Backup during off-peak hours

Schedule backups when network usage is low.
3

Use compression

Cloudstic automatically compresses data before storage.
4

Enable packfiles

Bundle small objects to reduce round trips (enabled by default).

Common Use Cases

Web Server Backups

Database Server Backups

Application Server Backups

Troubleshooting

Connection Refused

Solutions:
  • Check that SSH service is running on the remote server
  • Verify the hostname and port are correct
  • Check firewall rules

Authentication Failed

Solutions:
  • Verify username and credentials
  • Check SSH key permissions (must be 600)
  • Ensure the public key is in ~/.ssh/authorized_keys on the server
  • Try password authentication if key auth fails

Permission Denied

Solutions:
  • Check that the user has read access to the source directory
  • Verify the source path is correct
  • Check filesystem permissions on the remote server

Slow Backups

If SFTP backups are taking too long:
  1. Use exclude patterns to reduce data transfer
  2. Check network bandwidth between source and destination
  3. Consider local backups if possible (install Cloudstic on the remote server)
  4. Run backups during off-peak hours

Environment Variables

Set default SFTP credentials:

Next Steps

Local Source

Learn about backing up local directories

SSH Key Setup

Set up SSH keys for authentication

Scheduling Backups

Automate backups with cron or systemd

Exclude Patterns

Master exclude pattern syntax