I use a homogenized file structure across all of my devices and use symbolic links or scripts to move files that the operating system or programs want in specific places. This allows me to always find files quickly without relying on a search tool. This also makes it very easy to backup and restore all of my data. Images of pre-configured systems automatically begin syncing with the main server when they are re-installed from a backup. The master version of this structure is stored on the server and are synced to the devices they are needed on with syncthing or rsync depending on system. New systems can be provisioned by simply installing an OS and syncing the appropriate folder. This entire common folder is backed up by having a full copy saved to a hard drive once per week, with this drive being rotated and stored off-site. The entire file system is also mirrored to a second server capable of supporting the same syncing in case the first server goes offline.
Folder | Purpose |
---|---|
auth | contains all credentials and password databases |
backup | contains system backups and archives |
dot | contains all configuration and dot files |
download | contains folders for downloads on all devices |
git | contains all project files |
media | contains all media files |
tools | contains all portable program files |
The backup folder contains several folders for backups.
Folder | Purpose |
---|---|
archive | contains archives of all data not yet compliant with the common folder system |
clonezilla | contains clonezilla backups of pre-configured systems |
iso | contains ISOs of all currently deployed systems and utility images |
Dot files are organized into folders based on the system they are applicable to. On linux, dot files are deployed using shell scripts. On windows, configuration files are deployed by batch files.
The download folder has two sub-folders. One folder serves as the download location for the server. The second is a download folder that is synced across all devices so that something downloaded on my phone is also available on my laptop and all other devices.
The git folder is the root for all projects. Every project I do, whether code or not, is revisioned with git. Even this wiki is stored as a folder in the git directory. The git folder is subdivided into folders organized in a similar format to projects on this wiki.
Each of the literature sub-folders are Calibre libraries. The show and movie folders are broken up into a sub-folder for each show and movie following the Kodi naming standard. The emulation sub-folder is broken up into sub-folders for each system.
Folder | Sub-Folder |
---|---|
audio | audiobooks |
audio | music |
literature | books |
literature | manuals |
literature | textbooks |
games | windows |
games | linux |
games | emulation |
video | movies |
video | shows |
Tools are organized into folders based on the system they run on. When at all possible I use portable versions of apps. This makes it easier to keep multiple versions of various software. It also ensures that if a vendor removes some functionality or makes bad updates I have access to a working version of their software.