Skip to main content

backup

Snapshot a directory and upload it to remote

Usage:
snaper backup files [flags]

Aliases:
files, fs, filesystem

Examples:
snaper backup files /path/to/backup
snaper backup files mybackup

Flags:
--all Backup all directories configured
--concurrent int Number of concurrent workers to use for upload
--configure Only configure the backup without running it
--encryption-key string Encryption key to use for encrypting data
--encryption-key-file string Encryption key file to read for encrypting data
--exclude strings Paths to exclude from backup (separated by commas)
--follow-symlinks Follow symlinks when backing up files
-h, --help help for files
--ignore-existing Check for existing files on S3 and ignore them (only for bug fixing)
--include strings Paths to include in backup (separated by commas)
-n, --name string Name of the backup (optional)
-p, --path string Directory path to backup (optional)
note

MySQL and PostgreSQL support socket connections. This method will be attempted by default if you specify "localhost" as the host (which is the default value). If you want to force a TCP/IP connection instead, specify 127.0.0.1.

Usage Examples

Backup a directory while excluding files

# Exclude cache and log directories
snaper backup files /path/to/backup --exclude "var/cache/**,var/log/**"

# Include only Python files, except tests (using ** for recursive matching)
snaper backup files /project --include "**/*.py" --exclude "**/*test*.py,**/*_test.py"

# Exclude all node_modules at any depth
snaper backup files ./app --exclude "**/node_modules/**"

# Exclude all .log files at any depth
snaper backup files /app --exclude "**/*.log"

# Exclude .log files but keep error.log at the root level
snaper backup files /app --include "error.log" --exclude "**/*.log"

Filtering Options (Pattern Matching)

Matching Rules

  • Patterns match against the full absolute path of files. Ex: backing up /home/user with pattern Documents/** → matches /home/user/Documents/**.

  • Relative patterns are converted to absolute:

    • logs/** becomes /path/to/backup/logs/**
  • The slash (/) and wildcards matter:

    • myfile → only /path/to/backup/myfile (exact match at root)
    • dir/myfile → only /path/to/backup/dir/myfile
    • **/myfile → any file named myfile at any depth
    • *.log → only .log files at the root level
    • **/*.log → all .log files at any depth
  • Useful patterns:

    • * → any string except / (*.log, cache*)
    • ** → matches recursively including / (**/logs/**, **/*.py)
    • ? → a single character (file?.txt)

Priority Order

  1. Inclusions are evaluated before exclusions.
  2. If a file matches both, it is excluded.

Example:

snaper backup files /project \
--include "**/*.py" \
--exclude "**/*test*.py"

All Python files are included, but test files are excluded.