A comprehensive migration and backup tool for Fedora-based systems (including Bazzite, Silverblue, Kinoite) moving to Arch Linux.
- Full System Backup: Creates encrypted backups using Borg of your home directory and system configuration
- Package Mapping: Intelligent mapping of Fedora packages to Arch Linux equivalents using Repology API
- Container Support: Captures and manages Distrobox container configurations and packages
- Flatpak Management: Backs up and restores Flatpak applications
- ISO Verification: Validates installation media checksums and GPG signatures
- Dual Interface: Works in both CLI and GUI mode (using Zenity)
- Fedora-based system (Fedora, Bazzite, Silverblue, Kinoite)
- Bash 4.0+
- Required tools:
borg
- For encrypted backupscurl
- For API requestsjq
- For JSON parsingflatpak
- For Flatpak managementdistrobox
- For container managementpodman
- Container runtimerpm
- Package querieszenity
- GUI mode (optional)
-
Clone the repository:
git clone https://github.com/doublegate/container-pkg-map.git cd container-pkg-map
-
Make the script executable:
chmod +x ultimate_migration_script.sh
# Show help
./ultimate_migration_script.sh --help
# Create backup (default: ~/migrate-YYYYMMDD_HHMM)
./ultimate_migration_script.sh backup
# Create backup to specific directory
./ultimate_migration_script.sh backup /path/to/backup
# Restore from backup
./ultimate_migration_script.sh restore /path/to/backup
# Verify ISO
./ultimate_migration_script.sh verify-iso /path/to/arch.iso /path/to/checksum.txt
# Install from verified ISO
./ultimate_migration_script.sh install-iso /path/to/arch.iso /path/to/checksum.txt
Advanced Options
< 8AB5 a id="user-content-advanced-options" class="anchor" aria-label="Permalink: Advanced Options" href="#advanced-options"># GUI mode with progress dialogs
./ultimate_migration_script.sh --gui backup
# Dry run (preview actions without executing)
./ultimate_migration_script.sh --dry-run backup
# Verbose output for debugging
./ultimate_migration_script.sh --verbose backup
# Clear package mapping cache
./ultimate_migration_script.sh --clear-cache backup
# Limit package processing (for testing)
./ultimate_migration_script.sh --max-packages 50 backup
- System Configuration:
/etc
directory - User Home: Complete home directory with Borg deduplication
- Package Lists:
- RPM packages from host system
- Flatpak applications
- Packages from each Distrobox container
- Package Mappings: Fedora to Arch package equivalents
-
On Fedora System:
# Create comprehensive backup ./ultimate_migration_script.sh backup ~/migration-backup
-
Transfer to New System: Copy the backup directory to your new Arch Linux installation
-
On Arch System:
# Restore configuration and data ./ultimate_migration_script.sh restore ~/migration-backup
The script uses the Repology API to find Arch Linux equivalents for Fedora packages:
- Searches for exact matches first
- Falls back to similar package names
- Caches results for 24 hours to minimize API calls
- Respects API rate limits (1 request/second)
- Borg backups are encrypted using keyfile-blake2
- Encryption keys are exported for disaster recovery
- Passphrase stored securely in
~/.borg/passphrase
- All operations respect user permissions
- Use
--verbose
flag for detailed output - Check
migrate.log
in the backup directory - Clear cache with
--clear-cache
if mapping issues occur - Ensure all dependencies are installed
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Repology for package mapping API
- BorgBackup for reliable encrypted backups
- Distrobox for container management