You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

149 lines
8.6 KiB
Markdown

# PC Directory Structure
> **Thank you for visiting!** If you are viewing this repo on GitHub or GitLab, please note that this is just a mirror. Please visit the [originating repo](https://tacksupport.net/git/Tack-Support/PC-Directory-Structure) for any comments, issues, pull requests, etc. You can sign in with your GitHub or GitLab account via Oauth2.
<br>
I ascribe to the [PARA Method](https://fortelabs.com/blog/para/) for organizing my to-do and [personal knowledge management](https://en.wikipedia.org/wiki/Personal_knowledge_management) / [second brain](https://fortelabs.com/blog/basboverview/) systems. A deep dive on how all of that works is out of the scope of this repo (if I ever write a blog post on it, I will link that here). But the short of it regarding how it applies here is that you sort everything into 4, and only 4, root directories in order of actionability: "Projects", "Areas", "Resources", and "Archives". And you only go one subdirectory deep within thos. As you will see below, I've expanded on that when it comes to my entire working file structure on my computers. I've aded "Inbox", User Directories", "Programs", and "DevMin" (my personal term for dev/git/admin type work on my homelab). And I also am not afraid to have as many subdirectories as necessary.
I've designed this system to be as portable as possible from one system to another, and from Linux to Windows. You could just about copy and paste the file structure root directory from any one to any other. Update a few symlinks if you're using them. And then point the system's user directories to their new locations, as appropriate.
My primary reason for uploading this here is to give myself an easy place to refer to it. But I figured I might as well make it public for others. I doubt anyone will use it exactly as I have it written down here, but hopefully you can find inspiration from it. As I update, I will move the now out of date versions to the `prior-versions.md` file and replace them with the new ones here in the `README.md` to keep the files in this repo at a minimum.
<br>
<details>
<summary>Legend</summary>
### Legend
- **root-directory-name** >> description of directory
- **dir-with-explanation** >> description of directory
> Explanation
- **symlink-source** >> description of directory
> symlinked to "path/to/where/symlink/is/sent"
- **symlink-dest** >> description of directory
> symlink of "path/to/where/symlink/is/from"
> Further explanation
- **some-dir** >> description of directory
- ${PLACE_HOLDER_FOR_SUBDIRS}
- ./file-name >> description of file
</details>
<br>
### Linux Structure for v1.0.0
- **file-structure-root** >> the root directory for everything that follows
> Name this directory how you like, and place it wherever you please. Tho I recommend your $HOME directory.
- **00-inbox** >> default Desktop directory
- **downloads** >> default Downloads directory
- **scans** >> for printer/scanner to upload to
- **screenshots** >> for screenshot util to upload to
- **tmp** >> for "RAM" work
- **10-projects** >> "P" in PARA
- ${PROJECT-DIRECTORIES}
- **20-areas** >> 1st "A" in PARA
- ${AREA-DIRECTORIES}
- **30-resources** >> "R" in PARA
- **40-archives** >> 2nd "A" in PARA
- **filing-cabinet** >> for documents you would put in a physical filing cabinet
> symlinked to "$HOME/50-user-dirs/documents/"
- **manuals** >> for storing home/office manuals
- **glacial** >> for long term storage
> symlinked to "$HOME/50-user-dirs/documents/" <br>
> CD to where the directories/files to be archived are, and archive thusly:
> ```bash
> tar cf ${ARCHIVE_NAME}.tar.xz \
> --use-compress-program='xz -9v' \
> /path/to/glacial/${DIR_OR_FILE_TO_ARCHIVE}
> ```
- **50-user-dirs** user/profile directories
- **audiobooks** >> self-explanatory
- **bookmarks** >> symlinks to directories & files deep in the OS file system
- **documents** >> default Documents directory
- **filing-cabinet** >> for documents you would put in a physical filing cabinet
> symlink of "$HOME/40-archives/filing-cabinet"
- **glacial** >> for long term storage
> symlink of "$HOME/40-archives/glacial"
- **obsidian-vaults** >> place Obsidian.md vaults here
- ${VAULT-DIRECTORIES}
- **templates** >> default Templates directory
- **ebooks** >> self-explanatory
- **images** >> default Pictures directory
- **music** >> default Music directory
- **shares** >> a directory to place shared directories in
- **cloud-shares** >> a directory to place cloud share directories in
- ${CLOUD-SHARE-DIRECTORIES}
- **network-shares** >> to "co-locate" your network shares with other shares
> symlink of "/mnt"
- **p2p-shares** >> a directory to place peer to peer shared directories in
- ${P2P-SHARE-DIRECTORIES}
- **public-directory** >> default Public directory
- **videos** >> default Videos directory
- **60-programs** >> portable apps and the like
- **70-devmin** >> to do any dev/git/admin work out of
- **repos** >> for git/svc/etc repos
- ${VERSION-CONTROL-SYSTEM-DIRECTORIES}
- ${PROJECT-DIRECTORIES}
- **scripts** >> place scripts in here and either add to path or copy script files from here to a dir in path
- **vsc-workspaces** >> place VSCod[e|ium] workspace files in here
- ./scratchpad.md >> a junk file use as a scratchpad
*Note:* To modify the default user directories on Linux, edit the `user-dirs.dirs` file, often located in `$HOME/.config/`. You cannot add directories to the config file, but you can edit the paths of the existing ones. They must be relative to `$HOME` and changes will take effect after relogging.
<br>
### Windows Structure for v1.0.0
- **file-structure-root** >> the root directory for everything that follows
> Name this directory how you like, and place it wherever you please. Tho I recommend your $HOME directory.
- **00-inbox** >> default Desktop directory
- **downloads** >> default Downloads directory
- **scans** >> for printer/scanner to upload to
- **screenshots** >> for screenshot util to upload to
- **tmp** >> for "RAM" work
- **10-projects** >> "P" in PARA
- ${PROJECT-DIRECTORIES}
- **20-areas** >> 1st "A" in PARA
- ${AREA-DIRECTORIES}
- **30-resources** >> "R" in PARA
- **40-archives** >> 2nd "A" in PARA
- **filing-cabinet** >> for documents you would put in a physical filing cabinet
> symlinked to "$HOME/50-user-dirs/documents/"
- **manuals** >> for storing home/office manuals
- **glacial** >> for long term storage
> symlinked to "$HOME/50-user-dirs/documents/" <br>
> Archive directories/files using [7zip](https://www.7-zip.org). First "Add to archive..." as a .tar, then again as an .xz with Ultra Compression Level. Then move the archive here.
- **50-user-dirs** user/profile directories
- **audiobooks** >> self-explanatory
- **bookmarks** >> symlinks to directories & files deep in the OS file system
- **documents** >> default Documents directory
- **filing-cabinet** >> for documents you would put in a physical filing cabinet
> symlink of "$HOME/40-archives/filing-cabinet"
- **glacial** >> for long term storage
> symlink of "$HOME/40-archives/glacial"
- **obsidian-vaults** >> place Obsidian.md vaults here
- ${VAULT-DIRECTORIES}
- **templates** >> simply here for parity between Linux & Windows setups
- **ebooks** >> self-explanatory
- **images** >> default Pictures directory
- **music** >> default Music directory
- **shares** >> a directory to place shared directories in
- **cloud-shares** >> a directory to place cloud share directories in
- ${CLOUD-SHARE-DIRECTORIES}
- **network-shares** >> to "co-locate" your network shares with other shares
> need to verify method of showing those here
- **p2p-shares** >> a directory to place peer to peer shared directories in
- ${P2P-SHARE-DIRECTORIES}
- **public-directory** >> simply here for parity between Linux & Windows setups
- **videos** >> default Videos directory
- **60-programs** >> portable apps and the like
- **70-devmin** >> to do any dev/git/admin work out of
- **repos** >> for git/svc/etc repos
- ${VERSION-CONTROL-SYSTEM-DIRECTORIES}
- ${PROJECT-DIRECTORIES}
- **scripts** >> place scripts in here and either add to path or copy script files from here to a dir in path
- **vsc-workspaces** >> place VSCod[e|ium] workspace files in here
- ./scratchpad.md >> a junk file use as a scratchpad
*Note:* To modify the default user directories on Windows, rename them first, then move them in a top down order (i.e. move Downloads into Desktop after having already moved Desktop) to avoid any weirdness. Rename using [these directions](https://superuser.com/a/1578148).