-
Notifications
You must be signed in to change notification settings - Fork 0
FAQ
Common questions about DFBU.
DFBU (DotFiles Backup Utility) is a Linux desktop application for backing up and restoring configuration files (dotfiles). It provides mirror backups (readable directories) and archive backups (compressed .tar.gz files) with safety features like pre-restore backups and verification.
Advantages:
- Automated: One-click backups vs. manual cp commands
- Safe: Pre-restore backups prevent data loss
- Verified: Optional integrity checking ensures backup success
- Organized: Tag-based organization and profiles
- Flexible: Mirror + archive dual-mode support
No. While designed for dotfiles, DFBU can backup any files or directories:
- Application configurations (
~/.config/) - System configuration files (
/etc/fstab) - Scripts and tools (
~/scripts/) - Project-specific configs
Supported: Linux (64-bit) Tested: Fedora, Ubuntu, Debian, Arch Linux Not Supported: Windows, macOS (currently)
Cross-platform support is a potential future feature.
AppImage (recommended):
- Self-contained, no dependencies
- Works on all distributions
- Easy updates via AppImageUpdate
Source (for developers):
- Access to latest features
- Customization and contribution
- Development environment setup
AppImage: No, Python bundled inside Source: Yes, Python 3.14+ required
AppImage: ~/.config/dfbu/
Source: DFBU/data/ (development default)
Configuration includes:
-
settings.yaml: Global settings -
dotfiles.yaml: Dotfile library -
session.yaml: Temporary exclusions -
profiles.yaml: Backup profiles
Method 1 (GUI):
- Click "Add" button
- Fill in application name, description, path
- Optionally add tags
- Click "OK"
Method 2 (Manual):
- Click "Edit Config" button
- Add entry to
dotfiles.yaml:Bash: description: Bash configuration paths: - ~/.bashrc - ~/.bash_aliases tags: shell, terminal
- Save and validate
Yes, use paths (plural) field:
Bash:
description: Bash configuration
paths:
- ~/.bashrc
- ~/.bash_profile
- ~/.bash_aliases
tags: shellMirror Backup:
- Creates readable directory structure
- Files remain uncompressed
- Easy browsing and selective restore
- Larger storage footprint
Archive Backup:
- Creates compressed .tar.gz archive
- Space-efficient (60-80% compression)
- Single-file backup package
- Requires extraction for restore
Recommendation: Enable both for flexibility
Method 1: .dfbuignore:
Create ~/.config/dfbu/.dfbuignore:
# Exclude cache
.cache/
__pycache__/
# Exclude logs
*.log
logs/
Method 2: Temporary Exclusion:
- Uncheck dotfile in Backup tab
- Exclusion persists in session.yaml
Method 3: Don't Add to Library:
- Simply don't add large directories to dotfiles.yaml
Not directly. DFBU requires manual backup initiation.
Workaround (future feature consideration):
- Use cron with DFBU CLI (when available)
- Use systemd timers
- Desktop environment schedulers
Method 1: Exclusions:
- Uncheck unwanted dotfiles in Backup tab
- Execute backup
Method 2: Profiles:
- Create profile with specific exclusions
- Load profile before backup
Method 3: Filter:
- Use filter input to show subset
- Check only desired dotfiles
Depends on:
- Number of files
- Total size
- Compression level
- Disk speed
- Verification enabled
Typical Times:
- Small (< 100 files, < 10MB): 5-30 seconds
- Medium (100-1000 files, 10-100MB): 30 seconds - 5 minutes
- Large (> 1000 files, > 100MB): 5-30 minutes
Files are skipped when:
- Unchanged: File identical to previous backup (size, timestamp match)
- Missing: Source file doesn't exist
- Excluded: File matches .dfbuignore pattern
Check verbose logging for detailed skip reasons.
Mirror Backups: ~1:1 ratio (same size as originals) Archive Backups: 20-40% of original size (with compression level 5) Both: 1.2-1.4x original size
Example:
- Original files: 100 MB
- Mirror backup: ~100 MB
- Archive backup: ~30 MB (level 5)
- Total: ~130 MB
Yes, if cloud storage is mounted as local directory:
Works With:
- Nextcloud/ownCloud (mounted via davfs2)
- Dropbox (sync client)
- Google Drive (rclone mount)
- pCloud Drive (mounted)
Set Paths:
- Mirror:
~/Nextcloud/backups/mirror - Archive:
~/Dropbox/backups/archives
Controlled by max_archives setting (default: 5).
When limit reached:
- Oldest archive deleted automatically
- Newest archives retained
- Rotation happens after successful backup
Yes, if you have read permissions:
System:
description: System-wide configs
paths:
- /etc/fstab
- /etc/hosts
- /etc/ssh/sshd_config
tags: systemNote: Requires read permissions. Use sudo if needed, or copy to home directory first.
- Navigate to Restore tab
- Browse backup (mirror or archive)
- Select files to restore
- Click "Restore" button
- Confirm restoration
Pre-restore backup created automatically for safety.
Default Behavior:
- Pre-restore backup created (if enabled)
- Existing files overwritten with backup versions
- Verification optional
Safety Backup Location: ~/.local/share/dfbu/restore-backups/
Yes, via pre-restore safety backup:
cd ~/.local/share/dfbu/restore-backups/
ls -lt # Find most recent
cp -r restore-backup-YYYYMMDD-HHMMSS/* ~/Not directly via GUI (current limitation).
Workaround:
- Restore to original location
- Move files manually to desired location
Or use command line:
# From mirror backup
cp -r ~/backups/mirror/hostname/bash/.bashrc ~/new-location/
# From archive
tar -xzf backup.tar.gz -C /tmp/
cp /tmp/backup/bash/.bashrc ~/new-location/# Backup existing
mv ~/.config/dfbu ~/.config/dfbu.backup
# Relaunch DFBU to generate defaults
./DFBU-x86_64.AppImageYes:
-
Export Configuration:
- Click "Export Config" button
- Choose destination
- Share
dotfiles.yaml
-
Recipients Import:
- Copy
dotfiles.yamlto~/.config/dfbu/ - Launch DFBU
- Adjust paths as needed
- Copy
DFBU v0.6.1+ uses exclusion model:
- All dotfiles included by default
- Excluded dotfiles temporarily skipped
- No "enabled/disabled" toggle
Exclusions:
- Stored in
session.yaml - Persist across sessions
- Can be cleared
Via GUI:
- Click "Validate Config" button in Configuration tab
- Reports YAML syntax errors and missing fields
Via Command Line:
python3 -c "import yaml; yaml.safe_load(open('~/.config/dfbu/settings.yaml'))"Named backup configurations with:
- Specific exclusion lists
- Custom option overrides
- Descriptive names and purposes
Use Cases:
- Different machines (work, home)
- Different scenarios (minimal, full)
- Testing vs. production
No limit. Create as many as needed for different scenarios.
Partial Override:
- Profile options override global settings
- Unspecified options use global defaults
- Exclusions are profile-specific
Example:
- Global:
compression_level: 5 - Profile:
compression_level: 9(overrides) - Used:
9when profile active
Enable When:
- Critical configuration backups
- First-time backup setup
- Network/cloud destinations
- After system changes
Disable When:
- Very large backups (> 1GB)
- Frequent automated backups
- Performance is critical
Recommendation: Enable for peace of mind
Computes SHA-256 hash of source and backup files:
- Match: Files identical
- Mismatch: Backup corrupted or files changed
More thorough than size comparison but slower.
Retry Backup:
- Close applications that might modify files
- Execute backup again
- Check verification results
If Persistent Failures:
- Check disk health
- Verify sufficient disk space
- Check file permissions
- Report as bug if unexplained
Current: gzip (.tar.gz) Compression Levels: 1-9 (configurable) Future: May support bzip2, xz, zstd
Yes:
- File permissions (rwx)
- Ownership (user:group)
- Timestamps (mtime, atime)
- Extended attributes (where supported)
Uses Python 3.14's Path.copy(preserve_metadata=True) or shutil.copy2().
Yes, excellent combination:
Workflow:
- Set mirror_dir to Git repository
- DFBU creates backups in Git repo
- Commit and push to remote:
cd ~/dotfiles-repo git add -A git commit -m "Update dotfiles" git push
Benefits:
- Version history via Git
- Easy synchronization across machines
- Diff tracking for configuration changes
Designed For: Configuration files (typically < 1GB) Works With: Larger data sets but:
- Size warnings for files > 1GB
- Slower hash verification for large files
- Consider dedicated backup tools for TB-scale data
Better Tools for Large Data: rsync, restic, borg, duplicity
Check:
- Source paths exist:
ls -la ~/.bashrc - Paths correct in dotfiles.yaml
- Tilde expansion enabled (~ → /home/user)
- Permissions allow reading
Enable Verbose Logging for detailed diagnostic info.
Optimization:
- Reduce compression level (9 → 5 or lower)
- Disable hash verification
- Use .dfbuignore to exclude large files
- Use SSD for backup destination
- Reduce backup selection
- Documentation: Wiki Home
- Troubleshooting: Troubleshooting
- Discussions: GitHub Discussions
- Issues: GitHub Issues
Navigation: Home | User Guide | Troubleshooting | Installation