| name | fastcopy-file-transfer-tool |
| description | Ultra-fast file copying and synchronization utility with parallel streams, integrity verification, and automation features |
| triggers | ["how do I use FastCopy for file transfers","configure FastCopy for bulk file migration","set up parallel file copying with FastCopy","FastCopy profile configuration examples","optimize FastCopy transfer speeds","automate file synchronization with FastCopy","verify file integrity during FastCopy operations","schedule recurring transfers with FastCopy"] |
FastCopy File Transfer Tool Skill
Skill by ara.so — Devtools Skills collection.
Overview
FastCopy is a high-performance file copying and synchronization utility designed for professionals who need to move large volumes of data efficiently. It provides parallel stream processing, intelligent caching, integrity verification, and automation capabilities through both CLI and configuration profiles.
Key Features:
- Multi-threaded parallel transfers (up to 64 concurrent streams)
- Profile-based configuration system using YAML
- Automatic retry and resume on failures
- SHA-256 + CRC-32 integrity verification
- Watch mode for continuous synchronization
- Cross-platform support (Windows, macOS, Linux)
- CLI and GUI interfaces
Installation
Windows
# Download and extract the portable version
# Run the installer or use the portable executable
fastcopy.exe --version
macOS
brew install fastcopy
Linux
sudo apt install fastcopy
sudo dnf install fastcopy
yay -S fastcopy
fastcopy --version
CLI Commands
Basic Syntax
fastcopy [SOURCE] [DESTINATION] [OPTIONS]
Key Commands
Simple Copy:
fastcopy /path/to/source.file /path/to/destination/
fastcopy /source/directory/ /destination/directory/
High-Speed Transfer:
fastcopy /large/dataset/ /backup/location/ --streams 64 --mode turbo
fastcopy source.iso /backups/ --buffer 256 --streams 32
Integrity Verification:
fastcopy /important/data/ /backup/ --verify
fastcopy /temp/files/ /destination/ --no-verify
Resume and Retry:
fastcopy /media/ /nas/ --resume always --retry 5
fastcopy /files/ /backup/ --resume on_failure --retry-delay 10
Logging and Monitoring:
fastcopy /data/ /backup/ --log-level debug --log-file transfer.log
fastcopy /source/ /dest/ --priority high
Profile Configuration
FastCopy uses YAML profiles for complex or recurring transfer operations.
Basic Profile Structure
basic-transfer.yaml:
transfer:
mode: "balanced"
streams: 16
buffer_size_mb: 128
verify: true
resume: on_failure
paths:
source: "/data/projects"
destination: "/backup/projects"
options:
overwrite: true
preserve_permissions: true
preserve_timestamps: true
follow_symlinks: false
Advanced Profile with Scheduling
scheduled-backup.yaml:
transfer:
mode: "turbo"
streams: 32
buffer_size_mb: 256
verify: true
resume: always
paths:
source: "/mnt/storage/raw_footage"
destination: "//nas/archive/project_alpha"
schedule:
type: "cron"
expression: "0 2 * * *"
timezone: "UTC"
filters:
include:
- "*.mp4"
- "*.mov"
- "*.avi"
exclude:
- "*.tmp"
- ".DS_Store"
- "Thumbs.db"
hooks:
on_start: "echo 'Starting backup...'"
on_complete: "/opt/scripts/notify-success.sh"
on_error: "/opt/scripts/alert-failure.sh"
Watch Mode Profile
continuous-sync.yaml:
transfer:
mode: "balanced"
streams: 8
buffer_size_mb: 64
verify: true
resume: always
paths:
source: "/home/user/documents"
destination: "/backup/documents"
schedule:
type: "watch"
interval_seconds: 300
debounce_ms: 1000
options:
sync_delete: false
bidirectional: false
conflict_resolution: "newer"
logging:
level: "info"
file: "/var/log/fastcopy/documents-sync.log"
rotate_size_mb: 50
Using Profiles
Load and Execute Profile
fastcopy --profile backup-profile.yaml
fastcopy --profile backup-profile.yaml --streams 64 --verify false
fastcopy --profile backup-profile.yaml --dry-run
fastcopy --profile continuous-sync.yaml --daemon
Code Examples
Shell Script Automation
automated-backup.sh:
#!/bin/bash
export FASTCOPY_LOG_DIR="/var/log/fastcopy"
export FASTCOPY_PROFILE_DIR="/etc/fastcopy/profiles"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
LOG_FILE="${FASTCOPY_LOG_DIR}/backup_${TIMESTAMP}.log"
echo "Starting backup at $(date)" | tee -a "$LOG_FILE"
fastcopy \
/data/production \
/backup/daily/production_${TIMESTAMP} \
--mode turbo \
--streams 32 \
--verify \
--resume always \
--log-file "$LOG_FILE" \
--priority high
if [ $? -eq 0 ]; then
echo "Backup completed successfully" | tee -a "$LOG_FILE"
curl -X POST "$NOTIFICATION_WEBHOOK" \
-H "Content-Type: application/json" \
-d "{\"status\": \"success\", \"timestamp\": \"$TIMESTAMP\"}"
else
echo "Backup failed" | tee -a "$LOG_FILE"
curl -X POST "$ALERT_WEBHOOK" \
-H "Content-Type: application/json" \
-d "{\"status\": \"failed\", \"timestamp\": \"$TIMESTAMP\"}"
exit 1
fi
Batch Processing
multi-source-sync.sh:
#!/bin/bash
SOURCES=(
"/data/project_a"
"/data/project_b"
"/data/project_c"
)
DEST_BASE="/backup/projects"
for source in "${SOURCES[@]}"; do
project_name=$(basename "$source")
fastcopy "$source" "${DEST_BASE}/${project_name}" \
--mode balanced \
--streams 16 \
--verify \
--log-file "/var/log/fastcopy/${project_name}.log" &
done
wait
echo "All syncs completed"
Conditional Transfer Script
smart-backup.sh:
#!/bin/bash
SOURCE_DIR="/data/media"
DEST_DIR="/backup/media"
MIN_FREE_SPACE_GB=100
available_space=$(df -BG "$DEST_DIR" | awk 'NR==2 {print $4}' | sed 's/G//')
if [ "$available_space" -lt "$MIN_FREE_SPACE_GB" ]; then
echo "Insufficient space: ${available_space}GB available, need ${MIN_FREE_SPACE_GB}GB"
exit 1
fi
if [ -f "${DEST_DIR}/.last_sync" ]; then
last_sync=$(cat "${DEST_DIR}/.last_sync")
changed_files=$(find "$SOURCE_DIR" -newer "${DEST_DIR}/.last_sync" -type f | wc -l)
if [ "$changed_files" -eq 0 ]; then
echo "No changes detected since last sync"
exit 0
fi
echo "Found $changed_files changed files"
fi
fastcopy "$SOURCE_DIR" "$DEST_DIR" \
--mode turbo \
--streams 32 \
--verify \
--resume always
if [ $? -eq 0 ]; then
date +%s > "${DEST_DIR}/.last_sync"
echo "Sync completed successfully"
fi
Configuration Files
Global Configuration
~/.fastcopy/config.yaml:
defaults:
mode: "balanced"
streams: 16
buffer_size_mb: 128
verify: true
resume: on_failure
ui:
theme: "dark"
show_progress: true
notification_level: "important"
paths:
log_directory: "~/.fastcopy/logs"
profile_directory: "~/.fastcopy/profiles"
temp_directory: "/tmp/fastcopy"
performance:
max_memory_mb: 4096
cpu_affinity: []
io_priority: "normal"
network:
tcp_buffer_kb: 256
retry_timeout_seconds: 30
max_retries: 5
backoff_multiplier: 2.0
Environment Variables
export FASTCOPY_CONFIG_DIR="$HOME/.fastcopy"
export FASTCOPY_PROFILE_DIR="$HOME/.fastcopy/profiles"
export FASTCOPY_LOG_DIR="/var/log/fastcopy"
export FASTCOPY_MAX_STREAMS=64
export FASTCOPY_BUFFER_SIZE_MB=256
export FASTCOPY_MAX_MEMORY_MB=8192
export FASTCOPY_DEFAULT_MODE="turbo"
export FASTCOPY_VERIFY_DEFAULT=true
export FASTCOPY_RESUME_DEFAULT="always"
export FASTCOPY_WEBHOOK_URL="https://hooks.example.com/fastcopy"
export FASTCOPY_OPENAI_API_KEY="${OPENAI_API_KEY}"
export FASTCOPY_CLAUDE_API_KEY="${CLAUDE_API_KEY}"
Common Patterns
Large File Migration
fastcopy /storage/raw_data/ /archive/raw_data/ \
--mode turbo \
--streams 64 \
--buffer 512 \
--verify \
--resume always \
--priority high \
--log-file migration-$(date +%Y%m%d).log
Incremental Backup
transfer:
mode: "balanced"
streams: 16
buffer_size_mb: 128
verify: true
resume: always
paths:
source: "/data"
destination: "/backup/incremental/$(date +%Y%m%d)"
options:
incremental: true
compare_method: "timestamp"
overwrite: false
filters:
exclude:
- "*.tmp"
- "*.cache"
- "node_modules/"
- ".git/"
Network Transfer with Compression
fastcopy /local/data/ \\\\server\\share\\data\\ \
--mode balanced \
--streams 8 \
--buffer 64 \
--verify \
--compress \
--network-optimize \
--retry 10
Selective Sync with Filters
transfer:
mode: "turbo"
streams: 24
buffer_size_mb: 256
verify: true
paths:
source: "/media/raw"
destination: "/nas/processed"
filters:
include:
- "**/*.mp4"
- "**/*.mov"
- "**/*.avi"
- "**/*.mkv"
exclude:
- "**/draft/**"
- "**/.tmp/**"
- "**/proxy/**"
options:
min_file_size_mb: 1
max_file_age_days: 30
Troubleshooting
Check Transfer Status
fastcopy --status
fastcopy --status --verbose
fastcopy --status --id transfer_12345
Performance Issues
Slow transfers:
for streams in 8 16 32 64; do
echo "Testing with $streams streams"
time fastcopy /test/source /test/dest --streams $streams --no-verify
done
fastcopy /source /dest --streams 32 --monitor &
PID=$!
top -p $PID
High CPU usage:
transfer:
mode: "standard"
streams: 4
buffer_size_mb: 64
performance:
cpu_affinity: [0, 1]
io_priority: "low"
Network Transfer Issues
Connection timeouts:
network:
retry_timeout_seconds: 60
max_retries: 10
backoff_multiplier: 1.5
tcp_buffer_kb: 512
transfer:
streams: 4
mode: "standard"
Verification Failures
Enable detailed verification logging:
fastcopy /source /dest \
--verify \
--checksum-algorithm sha256 \
--log-level debug \
--verify-log verify-report.txt
cat verify-report.txt | grep MISMATCH
Resume Interrupted Transfers
fastcopy /source /dest --resume always
fastcopy --resume-transfer transfer_12345
fastcopy --show-resume-state /dest
Debug Mode
fastcopy /source /dest \
--log-level trace \
--debug \
--log-file debug-transfer.log
fastcopy /source /dest \
--profile-performance \
--output-stats stats.json
Common Error Codes
| Code | Meaning | Solution |
|---|
| 1 | Permission denied | Check file/directory permissions |
| 2 | Source not found | Verify source path exists |
| 3 | Destination error | Check destination write permissions |
| 4 | Verification failed | Re-run with --verify --retry 5 |
| 5 | Out of space | Free space or change destination |
| 6 | Network timeout | Increase timeout, reduce streams |
| 7 | Interrupted | Use --resume always |
Integration Examples
CI/CD Pipeline (GitHub Actions)
name: Deploy Artifacts
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install FastCopy
run: |
wget https://example.com/fastcopy-linux-amd64
chmod +x fastcopy-linux-amd64
sudo mv fastcopy-linux-amd64 /usr/local/bin/fastcopy
- name: Deploy to production
env:
DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
DEPLOY_PATH: ${{ secrets.DEPLOY_PATH }}
run: |
fastcopy ./dist/ "${DEPLOY_HOST}:${DEPLOY_PATH}" \
--mode turbo \
--streams 32 \
--verify \
--resume always
Monitoring Integration
#!/bin/bash
TRANSFER_ID=$(fastcopy /source /dest --streams 32 --background)
while true; do
STATUS=$(fastcopy --status --id "$TRANSFER_ID" --format json)
PROGRESS=$(echo "$STATUS" | jq -r '.progress')
SPEED=$(echo "$STATUS" | jq -r '.speed_mbps')
curl -X POST "$METRICS_ENDPOINT" \
-H "Content-Type: application/json" \
-d "{\"transfer_id\": \"$TRANSFER_ID\", \"progress\": $PROGRESS, \"speed\": $SPEED}"
sleep 10
done
This skill provides comprehensive guidance for using FastCopy in development workflows, automation scripts, and production environments.