Sync
v1.0.0Synchronize files and directories between local, remote, and cloud storage reliably.
Security Scan
OpenClaw
Benign
high confidencePurpose & Capability
Name and description match the SKILL.md. The only runtime requirements declared are rsync or rclone binaries, which are exactly what a sync helper would need.
Instruction Scope
SKILL.md contains concrete, narrowly-scoped guidance for rsync, rclone, unison, and SSH usage. It does not instruct the agent to read unrelated system files, harvest credentials, or post data to unexpected endpoints. It explicitly advises not to hardcode cloud credentials.
Install Mechanism
No install spec and no code files — this is instruction-only, so nothing is downloaded or written to disk by the skill itself.
Credentials
The skill declares no environment variables or credentials, and the instructions only reference normal user paths (e.g., ~/.ssh/key) appropriate for SSH-based sync. No unrelated secrets are requested.
Persistence & Privilege
Skill is not always-enabled and does not request persistent modifications. It relies on user-invoked commands and therefore does not require elevated or permanent privileges.
Assessment
This skill is a text-only set of best-practices for using rsync/rclone/unison — it does not include code or request credentials. Still, be mindful: if you let an agent execute these commands, those commands can read and modify local files and contact remote hosts. Before running any destructive sync (especially with --delete or rclone sync), run --dry-run and inspect the exact command the agent will run. Ensure rsync/rclone on your system are the versions you expect, and never let the agent hardcode cloud credentials into scripts. If you prefer, run the suggested commands yourself rather than allowing autonomous execution.Like a lobster shell, security has layers — review code before you run it.
Runtime requirements
🔄 Clawdis
OSLinux · macOS · Windows
Any binrsync, rclone
latest
File Synchronization Rules
rsync Fundamentals
- Trailing slash matters:
rsync src/copies contents,rsync srccopies the folder itself — this is the #1 cause of wrong directory structures - Always use
-avzbaseline: archive mode preserves permissions/timestamps, verbose shows progress, compress speeds transfers - Add
--deleteonly when you want destination to mirror source exactly — without it, deleted source files remain on destination - Use
--dry-runbefore any destructive sync — shows what would change without modifying anything
Exclusions
- Create an exclude file instead of multiple
--excludeflags:rsync -avz --exclude-from=.syncignore src/ dest/ - Standard excludes for code projects:
.git/,node_modules/,__pycache__/,.venv/,*.pyc,.DS_Store,Thumbs.db - Exclude patterns are relative to source root —
/logs/excludes only top-level logs,logs/excludes logs/ anywhere
Cloud Storage (rclone)
rclone syncdeletes destination files not in source;rclone copyonly adds — use copy when unsure- Configure remotes interactively:
rclone config— never hardcode cloud credentials in scripts - Test with
--dry-runfirst, then--progressfor visual feedback during actual sync - For S3-compatible storage, set
--s3-chunk-size 64Mfor large files to avoid timeouts
Verification
- After critical syncs, verify with checksums:
rsync -avzcuses checksums instead of size/time (slower but certain) - For rclone, use
rclone check source: dest:to compare without transferring - Log sync operations to file for audit:
rsync -avz src/ dest/ | tee sync.log
Bidirectional Sync
- rsync is one-way only — for true bidirectional sync, use unison:
unison dir1 dir2 - Unison detects conflicts when both sides change — resolve manually or set prefer rules
- Cloud services like Dropbox/Syncthing handle bidirectional automatically — don't reinvent with rsync
Remote Sync
- For SSH remotes, use key-based auth:
rsync -avz -e "ssh -i ~/.ssh/key" src/ user@host:dest/ - Specify non-standard SSH port:
-e "ssh -p 2222" - Use
--partial --progressfor large files over unreliable connections — allows resume on failure
Common Pitfalls
- Syncing to mounted drives that unmount silently creates a local folder with the mount name — verify mount before sync
- Running sync without
--deleterepeatedly causes destination to accumulate deleted files forever - Time-based sync fails across machines with clock skew — use
--checksumfor accuracy or sync NTP first
Comments
Loading comments...
