Automated Rsync Backup with Password Auth & Alert System
Automated Rsync Backup with Password Auth & Alert System
Overview This n8n workflow provides automated rsync backup capabilities between servers using password authentication. It automatically installs required dependencies, performs the backup operation from a source server to a target server, and sends status notifications via Telegram and SMS.
Features Password-based SSH authentication (no key management required) Automatic dependency installation (sshpass, rsync) Cross-platform support (Ubuntu/Debian, RHEL/CentOS, Alpine) Source-to-target backup execution Multi-channel notifications (Telegram and SMS) Detailed success/failure reporting Manual trigger for on-demand backups
Setup Instructions
Prerequisites n8n Instance: Running n8n with Linux environment Server Access: SSH access to both source and target servers Telegram Bot: Created via @BotFather (optional) Textbelt API Key: For SMS notifications (optional) Network: Connectivity between n8n, source, and target servers
Server Requirements Source Server: SSH access enabled User with sudo privileges (for package installation) Read access to source folder
Target Server: SSH access enabled Write access to target folder Sufficient storage space
Configuration Steps
- Server Parameters Configuration Open the Server Parameters node and configure:
Source Server Settings: source_host: IP address or hostname of source server source_port: SSH port (typically 22) source_user: Username for source server source_password: Password for source user source_folder: Full path to folder to backup (e.g., /home/user/data)
Target Server Settings: target_host: IP address or hostname of target server target_port: SSH port (typically 22) target_user: Username for target server target_password: Password for target user target_folder: Full path to destination folder (e.g., /backup/data)
Rsync Options: rsync_options: Default is -avz --delete -a: Archive mode (preserves permissions, timestamps, etc.) -v: Verbose output -z: Compression during transfer --delete: Remove files from target that don't exist in source
- Notification Setup (Optional)
Telegram Configuration: Create bot via @BotFather on Telegram Get bot token (format: 1234567890:ABCdefGHIjklMNOpqrsTUVwxyz) Create notification channel Add bot as administrator Get channel ID: Send test message to channel Visit: https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates Find "chat":{"id":-100XXXXXXXXXX}
SMS Configuration: Register at https://textbelt.com Purchase credits Obtain API key
Update Notification Node: Edit Process Finish Report --- Telegram & SMS node: Replace YOUR-TELEGRAM-BOT-TOKEN with bot token Replace YOUR-TELEGRAM-CHANNEL-ID with channel ID Replace +36301234567 with target phone number(s) Replace YOUR-TEXTBELT-API-KEY with Textbelt key
- Security Considerations Password Storage: Consider using n8n credentials for sensitive passwords Avoid hardcoding passwords in workflow Use environment variables where possible
SSH Security: Workflow uses StrictHostKeyChecking=no for automation Consider adding known hosts manually for production Review firewall rules between servers
Testing Start with small test folder Verify network connectivity: ping source_host and ping target_host Test SSH access manually first Run workflow with test data Verify backup completion on target server
How to Use
Automatic Operation Once activated, the workflow runs automatically: Frequency**: Every days midnight
Manual Execution Open the workflow in n8n Click on Manual Trigger node Click "Execute Workflow" Monitor execution progress
Scheduled Execution To automate backups: Replace Manual Trigger with Schedule Trigger node Configure schedule (e.g., daily at 2 AM) Save and activate workflow
Workflow Process
Step 1: Dependency Check The workflow automatically: Checks if sshpass is installed locally Installs if missing (supports apt, yum, dnf, apk) Checks sshpass on source server Installs on source if needed (with sudo)
Step 2: Backup Execution Connects to source server via SSH Executes rsync command from source to target Uses password authentication for both connections Transfers data directly between servers (not through n8n)
Step 3: Status Reporting Success Message Format: [Timestamp] -- SUCCESS :: source_host:/path -> target_host:/path :: [rsync output]
Failure Message Format: [Timestamp] -- ERROR :: source_host -> target_host :: [exit code] -- [error message]
Rsync Options Guide
Common Options: -a: Archive mode (recommended) -v: Verbose output for monitoring -z: Compression (useful for slow networks) --delete: Mirror source (removes extra files from target) --exclude: Skip specific files/folders --dry-run: Test without actual transfer --progress: Show transfer progress --bwlimit: Limit bandwidth usage
Example Configurations: Basic backup -avz
Mirror with deletion -avz --delete
Exclude temporary files -avz --exclude='.tmp' --exclude='.cache'
Bandwidth limited (1MB/s) -avz --bwlimit=1000
Dry run test -avzn --delete
Monitoring
Execution Logs Check n8n Executions tab Review stdout for rsync details Check stderr for error messages
Verification After backup: SSH to target server Check folder size: du -sh /target/folder Verify file count: find /target/folder -type f | wc -l Compare with source: ls -la /target/folder
Troubleshooting
Connection Issues "Connection refused" error: Verify SSH port is correct Check firewall rules Ensure SSH service is running
"Permission denied" error: Verify username/password Check user has required permissions Ensure sudo works (for installation)
Installation Failures "Unsupported package manager": Workflow supports: apt, yum, dnf, apk Manual installation may be required for others
"sudo: password required": User needs passwordless sudo or Modify installation commands
Rsync Errors "rsync error: some files/attrs were not transferred": Usually permission issues Check file ownership Review excluded files
"No space left on device": Check target server storage Clean up old backups Consider compression options
Notification Issues No Telegram message: Verify bot token and channel ID Check bot is admin in channel Test with curl command manually
SMS not received: Check Textbelt credit balance Verify phone number format Review API key validity
Best Practices
Backup Strategy Test First: Always test with small datasets Schedule Wisely: Run during low-traffic periods Monitor Space: Ensure adequate storage on target Verify Backups: Regularly test restore procedures Rotate Backups: Implement retention policies
Security Use Strong Passwords: Complex passwords for all accounts Limit Permissions: Use dedicated backup users Network Security: Consider VPN for internet transfers Audit Access: Log all backup operations Encrypt Sensitive Data: Consider rsync with encryption
Performance Compression: Use -z for slow networks Bandwidth Limits: Prevent network saturation Incremental Backups: Rsync only transfers changes Parallel Transfers: Consider multiple workflows for different folders Off-Peak Hours: Schedule during quiet periods
Advanced Configuration
Multiple Backup Jobs Create separate workflows for: Different server pairs Various schedules Distinct retention policies
Backup Rotation Implement versioning: Add timestamp to target folder target_folder="/backup/data_$(date +%Y%m%d)"
Pre/Post Scripts Add nodes for: Database dumps before backup Service stops/starts Cleanup operations Verification scripts
Error Handling Enhance workflow with: Retry mechanisms Fallback servers Detailed error logging Escalation procedures
Maintenance
Regular Tasks Daily**: Check backup completion Weekly**: Verify backup integrity Monthly**: Test restore procedure Quarterly**: Review and optimize rsync options Annually**: Audit security settings
Monitoring Metrics Track: Backup duration Transfer size Success/failure rate Storage utilization Network bandwidth usage
Recovery Procedures
Restore from Backup To restore files: Reverse the rsync direction rsync -avz target_server:/backup/folder/ source_server:/restore/location/
Disaster Recovery Document server configurations Maintain backup access credentials Test restore procedures regularly Keep workflow exports as backup
Support Resources Rsync documentation: https://rsync.samba.org/ n8n community: https://community.n8n.io/ SSH troubleshooting guides Network diagnostics tools
Related Templates
Send Daily Weather Forecasts from OpenWeatherMap to Telegram with Smart Formatting
🌤️ Daily Weather Forecast Bot A comprehensive n8n workflow that fetches detailed weather forecasts from OpenWeatherMap...
Lookup IP Geolocation Details with IP-API.com via Webhook
This n8n template enables you to instantly retrieve detailed geolocation information for any given IP address by simply ...
Send alert when data is created in app/database
This template shows how you can take any event from any service, transform its data and send an alert to your desired ap...
🔒 Please log in to import templates to n8n and favorite templates
Workflow Visualization
Loading...
Preparing workflow renderer
Comments (0)
Login to post comments