SuperAPI AI Directory

fastcopy-file-transfer-accelerator

General & other

View repository

Updated 10-16 01:27

About this skill

FastCopy File Transfer Accelerator

Skill by ara.so — Devtools Skills collection.

FastCopy is a high-performance file copying and synchronization utility for Windows that uses multi-threaded I/O to maximize transfer speeds. It supports parallel streams, integrity verification, resume capabilities, and intelligent buffer management.

Installation

Windows (Recommended):

# Download from official source
# Visit: https://fastcopy.jp/en/

# Or using winget
winget install FastCopy

# Portable version - extract to desired location
Expand-Archive fastcopy-portable.zip -DestinationPath C:\Tools\FastCopy

Add to PATH (optional):

$env:PATH += ";C:\Program Files\FastCopy"
# Or for portable:
$env:PATH += ";C:\Tools\FastCopy"

Core Commands

Basic Syntax

fastcopy.exe [source] [destination] [options]

Common Operations

Simple copy:

fastcopy "C:\Source\Files" "D:\Backup\" /cmd=diff

Mirror synchronization:

fastcopy "C:\Projects" "E:\Archive\Projects" /cmd=sync /force_close

Move files:

fastcopy "C:\Temp\Downloads" "D:\Storage" /cmd=move

Verify after copy:

fastcopy "C:\Data" "\\NAS\Backup" /cmd=diff /verify

Key Command Options

Option Description Example
/cmd= Copy mode: diff, sync, move, delete /cmd=sync
/bufsize= Buffer size in MB (default: auto) /bufsize=256
/verify Verify files after transfer /verify
/linkdest Create hardlinks instead of copy /linkdest
/exclude= Exclude patterns /exclude="*.tmp;*.log"
/include= Include only patterns /include="*.jpg;*.png"
/force_close Force close open files /force_close
/log Enable logging /log
/logfile= Specify log file path /logfile="C:\Logs\copy.log"
/error_stop Stop on first error /error_stop
/acl Copy ACL/permissions /acl
/stream Copy alternate data streams /stream

Configuration Profiles

FastCopy uses .ini files for configuration. Create reusable profiles:

Example: High-Speed Transfer Profile

[main]
bufsize=512
estimate=1
verify=1
wipe_del=0
acl=0
stream=0
reparse=0
verify_mode=0
maxhist=20

[SyncProfile]
source=C:\Source
dest=D:\Destination
command=sync
bufsize=256
verify=1
filter_mode=0
exclude=*.tmp;*.log;.git

Load profile from command line:

fastcopy /cmd=sync /ini="C:\FastCopy\profiles\backup.ini"

Advanced Usage Patterns

Automated Backup Script

@echo off
REM backup-script.bat
SET FASTCOPY="C:\Program Files\FastCopy\FastCopy.exe"
SET SOURCE=C:\Important\Data
SET DEST=E:\Backups\%DATE:~-4,4%%DATE:~-10,2%%DATE:~-7,2%
SET LOGFILE=C:\Logs\backup-%DATE:~-4,4%%DATE:~-10,2%%DATE:~-7,2%.log

REM Create timestamped backup with verification
%FASTCOPY% "%SOURCE%" "%DEST%" ^
  /cmd=diff ^
  /bufsize=256 ^
  /verify ^
  /acl ^
  /stream ^
  /error_stop ^
  /log ^
  /logfile="%LOGFILE%" ^
  /exclude="*.tmp;*.cache;thumbs.db" ^
  /force_close

if %ERRORLEVEL% EQU 0 (
    echo Backup completed successfully
) else (
    echo Backup failed with error %ERRORLEVEL%
    exit /b %ERRORLEVEL%
)

PowerShell Integration

# fastcopy-wrapper.ps1
function Invoke-FastCopy {
    param(
        [Parameter(Mandatory=$true)]
        [string]$Source,
        
        [Parameter(Mandatory=$true)]
        [string]$Destination,
        
        [ValidateSet('diff', 'sync', 'move', 'delete')]
        [string]$Mode = 'diff',
        
        [int]$BufferSize = 256,
        
        [switch]$Verify,
        
        [string[]]$Exclude = @(),
        
        [string]$LogPath
    )
    
    $fastcopyPath = "C:\Program Files\FastCopy\FastCopy.exe"
    
    $arguments = @(
        "`"$Source`"",
        "`"$Destination`"",
        "/cmd=$Mode",
        "/bufsize=$BufferSize"
    )
    
    if ($Verify) {
        $arguments += "/verify"
    }
    
    if ($Exclude.Count -gt 0) {
        $excludePattern = $Exclude -join ";"
        $arguments += "/exclude=`"$excludePattern`""
    }
    
    if ($LogPath) {
        $arguments += "/log"
        $arguments += "/logfile=`"$LogPath`""
    }
    
    $arguments += "/force_close"
    
    Write-Host "Starting FastCopy: $($arguments -join ' ')"
    
    & $fastcopyPath $arguments
    
    if ($LASTEXITCODE -eq 0) {
        Write-Host "Transfer completed successfully" -ForegroundColor Green
        return $true
    } else {
        Write-Host "Transfer failed with exit code: $LASTEXITCODE" -ForegroundColor Red
        return $false
    }
}

# Usage example
Invoke-FastCopy `
    -Source "C:\Projects" `
    -Destination "\\NAS\Backup\Projects" `
    -Mode sync `
    -BufferSize 512 `
    -Verify `
    -Exclude @("*.tmp", "*.log", "node_modules", ".git") `
    -LogPath "C:\Logs\project-sync.log"

Network Transfer Optimization

REM For network transfers (SMB/CIFS), optimize buffer and streams
fastcopy "C:\LocalData" "\\RemoteServer\Share\Data" ^
  /cmd=sync ^
  /bufsize=512 ^
  /verify ^
  /no_ui ^
  /force_close ^
  /acl ^
  /log

REM For very large files (video, databases), increase buffer
fastcopy "C:\Videos" "D:\Archive" ^
  /cmd=diff ^
  /bufsize=1024 ^
  /verify

Scheduled Task Integration

Create scheduled backup (PowerShell):

$action = New-ScheduledTaskAction `
    -Execute "C:\Program Files\FastCopy\FastCopy.exe" `
    -Argument '"C:\Data" "E:\Backup" /cmd=sync /verify /log /force_close'

$trigger = New-ScheduledTaskTrigger -Daily -At 2am

$principal = New-ScheduledTaskPrincipal `
    -UserId "SYSTEM" `
    -LogonType ServiceAccount `
    -RunLevel Highest

Register-ScheduledTask `
    -TaskName "FastCopy Daily Backup" `
    -Action $action `
    -Trigger $trigger `
    -Principal $principal `
    -Description "Automated daily backup using FastCopy"

Performance Tuning

Buffer Size Selection

REM Small files (< 100MB total): 32-64MB buffer
fastcopy "C:\Documents" "D:\Backup" /cmd=diff /bufsize=64

REM Medium files (100MB-10GB): 128-256MB buffer
fastcopy "C:\Projects" "E:\Archive" /cmd=sync /bufsize=256

REM Large files (> 10GB): 512-1024MB buffer
fastcopy "C:\Videos" "F:\Media" /cmd=diff /bufsize=1024

REM Network transfers: 256-512MB buffer
fastcopy "C:\Data" "\\NAS\Share" /cmd=sync /bufsize=512

Exclude Common Temporary Files

fastcopy "C:\Development" "D:\Backup\Dev" ^
  /cmd=sync ^
  /exclude="*.tmp;*.log;*.cache;node_modules;.git;.svn;bin;obj;target;__pycache__;.vs;.vscode;*.swp;*.swo;Thumbs.db;.DS_Store"

Common Patterns

Mirror Backup (Delete Removed Files)

REM Sync mode mirrors source to destination (deletes extra files)
fastcopy "C:\ActiveProject" "E:\Backups\ActiveProject" ^
  /cmd=sync ^
  /verify ^
  /log

Incremental Backup (Keep Extra Files)

REM Diff mode only copies new/changed files (keeps extra files)
fastcopy "C:\ActiveProject" "E:\Backups\ActiveProject" ^
  /cmd=diff ^
  /verify ^
  /log

Safe Move with Verification

fastcopy "C:\Completed\Archive" "D:\LongTerm\Archive" ^
  /cmd=move ^
  /verify ^
  /error_stop ^
  /log

Hardlink Deduplication

REM Create hardlinks for duplicate files to save space
fastcopy "C:\Media" "D:\Deduplicated" ^
  /cmd=diff ^
  /linkdest ^
  /verify

Troubleshooting

Access Denied Errors

REM Run with elevated privileges and force close open files
fastcopy "C:\LockedFiles" "D:\Backup" ^
  /cmd=diff ^
  /force_close ^
  /acl

REM Skip files that can't be accessed
fastcopy "C:\System" "D:\Backup" ^
  /cmd=diff ^
  /skip_empty_dir ^
  /verify

Network Path Issues

REM Use UNC paths explicitly
fastcopy "\\Server1\Share\Data" "\\Server2\Backup\Data" ^
  /cmd=sync ^
  /bufsize=256 ^
  /force_close

REM Map network drive first if UNC fails
net use Z: \\Server\Share /user:DOMAIN\Username
fastcopy "C:\Local" "Z:\Backup" /cmd=sync
net use Z: /delete

Verify Failures

REM Check disk space and permissions
fastcopy "C:\Source" "D:\Dest" ^
  /cmd=diff ^
  /verify ^
  /log ^
  /logfile="C:\Logs\verify-debug.log"

REM Review log for specific verification errors

Performance Issues

REM Reduce buffer size if running out of memory
fastcopy "C:\Data" "D:\Backup" /cmd=diff /bufsize=64

REM Disable verification for initial bulk transfer
fastcopy "C:\Massive" "E:\Archive" /cmd=diff /bufsize=512

REM Then verify separately
fastcopy "C:\Massive" "E:\Archive" /cmd=diff /verify /open_window

Exit Codes

  • 0 - Success
  • 1 - Error occurred during copy
  • 2 - Fatal error (unable to continue)
  • 3 - User cancelled operation

Handle exit codes in scripts:

@echo off
fastcopy "C:\Source" "D:\Dest" /cmd=sync /verify

if %ERRORLEVEL% EQU 0 (
    echo Success
    exit /b 0
) else if %ERRORLEVEL% EQU 1 (
    echo Partial failure - check logs
    exit /b 1
) else (
    echo Fatal error
    exit /b 2
)

Environment Variables

# Set default FastCopy path
$env:FASTCOPY_PATH = "C:\Program Files\FastCopy\FastCopy.exe"

# Set default log directory
$env:FASTCOPY_LOGS = "C:\Logs\FastCopy"

Use in scripts:

%FASTCOPY_PATH% "C:\Source" "D:\Dest" /log /logfile="%FASTCOPY_LOGS%\copy.log"