The ultimate tool for migrating user profiles between Linux, macOS, and Windows
Migrating user profiles between different operating systems is a nightmare:
- Settings are stored in completely different formats
- Configuration files have platform-specific paths
- Migration requires manual copying and editing
- Risk of missing critical settings
- No audit trail of what was migrated
ProfileSync solves this by automating the entire process.
- Cross-Platform Migration - Seamlessly migrate between Linux, macOS, and Windows
- Comprehensive Coverage - Migrates settings for 20+ developer tools
- Safe Dry-Run Mode - Preview changes before applying them
- Force Mode - Overwrite existing files when needed
- Type Categorization - Organizes settings by type (IDE, Shell, Security, etc.)
- Audit Trail - Detailed migration report with success/failure tracking
| Category | Tools |
|---|---|
| IDEs | VS Code, IntelliJ IDEA |
| Editors | Vim, Emacs |
| Shells | Bash, Zsh, Fish |
| Terminal | Tmux |
| Version Control | Git |
| Security | SSH keys & config |
| Browsers | Chrome, Firefox |
| Package Managers | NPM, Yarn, Pip |
| Containers | Docker |
| Kubernetes | kubectl, Helm |
| Infrastructure | Terraform |
| Cloud | AWS CLI |
cd profilesync
go mod download
go build -o profilesync cmd/profilesync/main.gogo install -o /usr/local/bin/profilesync ./cmd/profilesync# Preview migration (dry-run)
./profilesync --source=linux --dest=macos --dry-run
# Perform actual migration
./profilesync --source=linux --dest=macos --dry-run=false
# Force overwrite existing files
./profilesync --source=linux --dest=macos --force=true| Flag | Description | Default |
|---|---|---|
--source |
Source platform (linux, macos, windows) | Current OS |
--dest |
Destination platform (linux, macos, windows) | Current OS |
--dry-run |
Preview without making changes | true |
--force |
Overwrite existing files | false |
--verbose |
Show detailed output | false |
--help |
Show help message | false |
# Preview the migration
./profilesync --source=linux --dest=macos --dry-run
# Perform the migration
./profilesync --source=linux --dest=macos# Full migration with force overwrite
./profilesync --source=windows --dest=linux --force=true# Backup profile on same OS
./profilesync --source=linux --dest=linux --dry-runThe tool generates a detailed report showing:
============================================================
π MIGRATION REPORT
============================================================
Source Platform: linux
Destination: macos
Mode: DRY RUN
β
Successfully migrated: 15
βοΈ Skipped: 3
β Failed: 0
============================================================
π Items by Type:
β’ Browser: 2 items
β’ Cloud: 2 items
β’ Container: 1 items
β’ Editor: 2 items
β’ IDE: 2 items
β’ Infrastructure: 2 items
β’ Package Manager: 3 items
β’ Security: 3 items
β’ Shell: 2 items
β’ Version Control: 2 items
β’ Kubernetes: 1 items
============================================================
β οΈ This was a DRY RUN. No files were actually migrated.
Run without --dry-run to perform the actual migration.
- SSH Key Preservation - Maintains proper permissions on private keys
- Credential Mapping - Safely handles credentials and secrets
- Audit Trail - Tracks all migrated items
- No Data Modification - Preserves original file contents
go test ./...go test -coverProfileSync uses a built-in mapping system that automatically detects common configuration file locations. You can extend this by modifying the GetDefaultMappings() function in main.go.
func GetDefaultMappings() map[string]string {
mappings := map[string]string{
"custom/tool/.config": "custom/tool/.config",
// Add your custom mappings here
}
return mappings
}docker run -it \
-v $HOME/.config:/host_config \
-v $HOME/.ssh:/host_ssh \
profilesync:latest \
--source=linux --dest=macos --dry-run- GUI interface for easier use
- Custom mapping file support (JSON/YAML)
- Conflict resolution wizard
- Rollback capability
- Enterprise deployment integration
- GitOps support for profile management
Migrate your entire development environment when switching from Linux to macOS or Windows.
Clone your exact development setup to a new computer.
Distribute standard configurations across team members' machines.
Quickly restore your development environment from backup.
Ensure consistent configurations across different platforms.
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch
- Add your custom mappings
- Submit a pull request
MIT License - Free for commercial and personal use
Built with GPU for developers who switch between platforms.
Version: 1.0.0
Author: @hallucinaut
Last Updated: February 25, 2026