Skills rsync
install
source · Clone the upstream repo
git clone https://github.com/TerminalSkills/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/TerminalSkills/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/rsync" ~/.claude/skills/terminalskills-skills-rsync && rm -rf "$T"
manifest:
skills/rsync/SKILL.mdsafety · automated scan (medium risk)
This is a pattern-based risk scan, not a security review. Our crawler flagged:
- uses sudo
- references .env files
Always read a skill's source content before installing. Patterns alone don't mean the skill is malicious — but they warrant attention.
source content
rsync
Overview
rsync is the standard tool for efficient file synchronization. It only transfers changed parts of files (delta transfer), supports SSH, handles permissions, and works for backups, deployments, and directory mirroring.
Instructions
Step 1: Basic Usage
# Sync local directories rsync -avz source/ destination/ # -a = archive (preserves permissions, timestamps, symlinks) # -v = verbose # -z = compress during transfer # Sync to remote server rsync -avz ./dist/ deploy@server:/var/www/myapp/ # Sync from remote rsync -avz deploy@server:/var/log/myapp/ ./logs/ # Dry run (show what would change without doing it) rsync -avzn source/ destination/
Step 2: Common Patterns
# Deploy website (delete files on destination that don't exist in source) rsync -avz --delete ./build/ deploy@server:/var/www/site/ # Backup with exclude rsync -avz --exclude='node_modules' --exclude='.git' --exclude='.env' \ /opt/myapp/ /backups/myapp/ # Incremental backup with hard links (space-efficient) rsync -avz --link-dest=/backups/latest \ /opt/myapp/ /backups/$(date +%Y%m%d)/ ln -snf /backups/$(date +%Y%m%d) /backups/latest # Bandwidth limited (useful for large transfers) rsync -avz --bwlimit=5000 source/ destination/ # 5000 KB/s
Step 3: Deployment Script
#!/bin/bash # scripts/deploy.sh — Deploy app with rsync SERVER="deploy@prod.example.com" REMOTE_DIR="/var/www/myapp" echo "Building..." npm run build echo "Syncing files..." rsync -avz --delete \ --exclude='node_modules' \ --exclude='.env' \ --exclude='.git' \ ./dist/ ${SERVER}:${REMOTE_DIR}/ echo "Restarting service..." ssh ${SERVER} "sudo systemctl restart myapp" echo "Deploy complete!"
Guidelines
- Always use
(dry run) first when using-n
to avoid accidental data loss.--delete - Trailing slash matters:
syncs contents,source/
syncs the directory itself.source - For large transfers, add
to see per-file progress.--progress - rsync over SSH is encrypted by default — safe for internet transfers.