Maybe etckeeper fits your use case? It's specifically built for managing /etc
files with version control systems. I can't say much about it since I've never used it, though.
Linux
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Rules
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
I'm replying here because I think yours is the right answer (etckeeper), but for other readers I want to note that for Arch Linux in particular, an alternative is aconfmgr.
NixOS does that well. I never quite managed to figure out a solution to this on other distros (which is actually what led me into making the jump in the end).
There should be no dotfiles outside of home directories so I assume you mean a config file. In those cases, git and symlinks are a great option. Make a config directory in your home dir and organize it however you want. Include config files for the tools you’re interested in, commit them to git for backups and then symlink/hardlink the file to the expected path for the application.
@gkpy I assume by "dotfiles" you simply mean "config files" as there should be nothing in your /etc/portage
directory that's hidden. For all configs I want to backup, I just keep a copy of them elsewhere. As for portage stuff, I just copy my make.conf
, and everything in each repos.conf
and package.*
directories.
If you want to simplify a complex solution to an already simple thing, take a look at bare git worktrees.
The other portage-relevant file you might want to back up is /var/lib/portage/world
, which isn't even in /etc.
@nyan Yes, always backup world
if nothing else. How the hell'd I forget that!. I usually symlink it to /etc but then forget I did when updating backups. Worst case, I wind up with a slightly old world file if I need no rebuild.
You were probably microfocused on /etc. I've done the same thing in similar situations.
NixOS
From lack of a better solution, I would symlink the folder or use stow --target /etc
flag if you use stow for managing dotfiles.
but maybe somebody knows a clever way to handle this?
backups
Seems like an odd software choice to create actual dotfiles under /etc. Often files there have much the same name as a user's dotfiles but without the dot. Thinking of things like /etc/profile vs ~/.profile and so on.
Without knowing precisely why those decisions were taken (good reason? ignorance? insanity?) it's not clear what steps to take.
Vaguely leaning towards symlinking or hardlinking but precisely what to do and which way around is still unclear.
Do those dotfiles have your user permissions or are they owned by a system account like root?
Those configuration files are for managing system's package manager, so I don't think $HOME
would be a better place.
Then they shouldn't have dots on them (bad design decision) and should be backed up by the system backup/restore mechanism, whatever that might be, not the user's own homedir backup, which is what I assume OP is talking about.
If they're talking about a full system backup including home directories, that's a moot point because I'd expect they'd be included anyway, dot or not.
Are you talking about the .keep files?
Not a great solution, but my custom set of functions that synchronize the (dot)files just copy them over into a directory preserving their paths within it e.g. cp /etc/hosts ~/.sysbackups/$(hostname)/etc/hosts
My script rewrites the paths to --etc--hosts
and so on. Avoids creating a giant tree of mostly empty directories. Wish distros came with a default out-of-the-box solution for all this.
right, for system files I do the minimal approach only select a handful that I wish to keep, so the tree is easy to search into. A system equivalent to $XDG_CONFIG_HOME
would be nice though.