Dicas para estruturar o diretório home (2023)
(unixdigest.com)Dicas para a estrutura do diretório home
- Estruturar ou organizar diretórios não é muito diferente de estruturar ou organizar outras coisas; o principal é fazer do jeito que faça mais sentido para você
- Ao lidar com organização, é muito fácil que tudo saia rapidamente do controle
- O principal objetivo da organização é a eficiência: você deve conseguir encontrar com facilidade e rapidez o que procura e salvar com facilidade e rapidez o que precisa guardar
Arquivos e diretórios ocultos padrão
- No meu diretório home, existem todos os arquivos ocultos padrão que fazem parte de um sistema operacional Unix moderno, como
.config,.aliases,.profile,.gnupg,.mozillae outros - Eu preferiria que todos os aplicativos respeitassem
XDG_CONFIG_HOME, mas não interfiro nem me preocupo muito com isso - No passado, eu mantinha o $HOME no Git, e essa é uma excelente forma de organizar dotfiles
- Ainda coloco todos os dotfiles no Git para manter o histórico de alterações, mas deixo como estão apenas os dotfiles que funcionam da mesma forma nos vários sistemas que uso
- Os dotfiles específicos de configuração ficam no diretório
dotfiles, e eu uso links simbólicos
Organização geral de arquivos e diretórios
- Arquivos e diretórios em geral são organizados principalmente de duas formas: por "categoria" e por "data"
- Estrutura básica de diretórios:
bindataedatamntusr/dotfiles
- Os diretórios
DesktopeDownloadssão mantidos como estão (porque parece que a maioria dos aplicativos os impõe) - No diretório
bin, guardo scripts de shell e executáveis binários pessoais (exceto os instalados por meio do gerenciador de pacotes) - O diretório
mnté usado para vários pontos de montagem, como cartões SD, discos USB e armazenamento compartilhado usado no homelab - Nunca uso montagem automática; em vez disso, uso scripts de shell para montar
- O diretório
usr/dotfilesé gerenciado com Git junto com dotfiles gerais como.aliases, e usa links simbólicos para os arquivos relacionados no diretóriodotfiles
Organização do diretório de dados
- Os diretórios
dataeedatasão os dois diretórios principais onde todo o material é armazenado - Esses dois diretórios são datasets ZFS executados em um pool espelhado de discos, separado da instalação raiz
- Aproveito o ZFS para usar snapshots e também envio e recebimento de ZFS regularmente, o que facilita o backup para armazenamento em rede
- A diferença entre
dataeedataé queedataé um dataset com criptografia nativa do ZFS - A criptografia é boa para a privacidade, mas é uma camada terrível de complexidade colocada sobre uma hierarquia de sistema de arquivos que já é complexa, e a criptografia do ZFS tem bugs
- Recomendo fortemente que dados importantes sejam sempre copiados em backup para várias soluções de armazenamento e locais diferentes
- Não uso armazenamento em nuvem para nada importante
Dicas adicionais
- A regra básica para nomear arquivos e diretórios é que você deve conseguir identificar facilmente o que é apenas pelo nome
- Se você não consegue saber sobre o que é um arquivo sem abri-lo, deve abri-lo imediatamente e renomeá-lo para algo mais significativo na próxima vez que olhar para o nome
- Se você deixar arquivos e diretórios sem organizar, depois fica muito difícil corrigir isso
- Quando necessário, uso nomes de arquivo longos com descrições detalhadas para conseguir entender o conteúdo do arquivo sem abri-lo
Opinião do GN⁺
-
Este artigo oferece dicas práticas sobre como organizar e estruturar diretórios. Em especial, é interessante a forma de separar e gerenciar diretórios criptografados e não criptografados usando datasets ZFS.
-
Pessoalmente, acho bom armazenar dados importantes de forma criptografada. No entanto, como há desvantagens como perda de desempenho e aumento da complexidade por causa da criptografia, parece melhor usar isso de forma seletiva conforme a situação.
-
Além disso, considero um ponto importante compartilhar com a família a forma de acessar os dados criptografados. É necessário garantir que os dados não sejam perdidos mesmo que a própria pessoa não consiga mais acessá-los por causa de um acidente ou algo do tipo.
-
Para gerenciar dados pessoais, é muito importante estabelecer uma estratégia de backup sistemática como a do autor. Seguir a regra de backup 3-2-1 e, em vez de armazenamento em nuvem, usar armazenamento local fisicamente distribuído também parece uma boa abordagem.
-
Ferramentas open source úteis para organização de dados pessoais incluem Syncthing e Nextcloud. Se essas ferramentas forem bem utilizadas, parece possível fazer uma gestão de dados pessoais organizada e segura.
1 comentários
Opiniões do Hacker News
Odeio quando o diretório home fica bagunçado, e fico especialmente irritado quando um app acha que precisa criar no home um diretório que nem sequer é oculto
O que mais me irrita é o
~/go, o diretório padrão dos módulos Go. Eu detestava tanto isso que evitei instalar apps em Go ou desenvolver em Go por anos, mas no fim precisei usar; dá para mudar configurandoGOPATH, mas como padrão é péssimo.rustup,.mix,.npm,.yarnMesmo assim, poluir o diretório home sem nem ter a decência de se esconder, como
~/go, é realmente desrespeitosoIsso vai tão contra a forma como organizo meus projetos que foi o principal motivo de eu não me interessar por Go. Pode fazer mais sentido para quem prefere reunir vários projetos sem relação em um único monorepo, mas não é o meu gosto
$HOME.$HOMEé onde os apps fazem bagunça; meus arquivos podem ficar literalmente em qualquer outro lugar.vimrce.gitconfigficam como links simbólicos para um repositório Git. Assim, o resto do diretório home pode ser um lixo completo que não faz diferença; se a máquina morrer, consigo recuperar em outra máquina em poucos minutosO xdg-ninja me ajudou a reduzir o problema da maioria dos apps despejar arquivos no diretório home
Em resumo, ele escaneia os programas instalados e informa se é possível configurá-los para seguir o padrão XDG. Não funciona para tudo, mas muitos apps têm essa opção
https://github.com/b3nj5m1n/xdg-ninja
Além de organização, quero fazer backup e portar entre máquinas de forma simples e enxuta
A pasta
.configé uma grande dor de cabeça para backups estratégicos, porque os apps colocam ali gigabytes de dados de sessão“Dados de sessão” não são “configuração”. A “configuração” de um app não deveria ter vários gigabytes
.configdeveria conseguir funcionar como somente leitura.configcomo se fosse um armazenamento de dados do app. Para esse uso existem.locale.cacheIsso é tão pessoal que a solução do autor não serve para mim, e acho que a minha também não ajudaria muito outras pessoas
Meu diretório home é quase vazio. Todos os arquivos de trabalho ficam no OwnCloud, e a pergunta real é qual é a estrutura de diretórios dentro do OwnCloud. Repositórios Git locais ficam em uma partição totalmente separada
Agora que o KeepassXC cuida das chaves SSH, as chaves em
.sshtambém foram para dentro de um arquivo Keepass no OwnCloud. Ficou extremamente simples, e agora quase não há nada no diretório home com que eu precise me preocuparDepois de fazer login, eu deveria conseguir sincronizar com um único comando o conjunto de arquivos adequado ao ambiente em que estou: se é Linux, se é de trabalho, pessoal, desktop ou servidor
Por exemplo, variáveis de ambiente como um endpoint do vault de casa ou determinados tokens são coisas que eu jamais quero exportar para um sistema de trabalho
Recentemente migrei para o home-manager do projeto NixOS, e parece bem promissor. A linguagem Nix é complexa, mas a abstração para definir vários ambientes era exatamente o que eu precisava, e dá para separar o conteúdo de arquivos de trabalho/pessoais com branches do Git
.vimrce.bashrc/.zshrcno homeA ideia é boa, mas não gosto da forma de dividir mídia em uma estrutura tipo família. Parece que, mais tarde, você acaba com um monte de arquivos duplicados e cópias duplicadas editadas, que se misturam facilmente e podem fazer você perder as versões editadas
Acho melhor organizar fotos por palavras-chave EXIF. Armazene os metadados na própria foto, talvez dentro do tipo MIME, e, se for algo relacionado à família, marque com tags como
#familyou#personx. Então as fotos ficam em pastas por data, e o resto é editado com palavras-chave em um programa como o Adobe BridgePara a estrutura de nomes de arquivos de documentos, já usei tanto
Date then Description.txtquantoKeyword Title or Description and then Date.txt. Para a data, uso uma data ISO no formatoYYYY-MM-DD-hhmmpara ordenação, e o-hhmmé opcionalÀs vezes quero ordenar por assunto, ou seja, por palavra-chave ou título, mas quando o mais importante é quando algo foi registrado, como em logs, é melhor colocar a data no começo
Pode parecer desnecessário, já que a data também fica salva no sistema, mas, ao mover arquivos, a data acaba mudando, e muda ainda mais facilmente se você cometer algum erro. Já a data no nome do arquivo não muda e também ajuda na ordenação da lista
photoprism e photostructure parecem não se importar muito com a estrutura de diretórios ou a organização, mas o paperless(-ngx e variações mais recentes) é famoso por ser bastante teimoso quanto à organização e por não querer respeitar estruturas existentes
Usei camlistore/perkeep para fotos por um tempo, mas o Google Photos tem uma capacidade avassaladora de descobrir quem está em cada foto, até levando em conta diferenças de idade. Meus dois filhos, que têm 8 anos de diferença, eram muito parecidos quando estavam em idades semelhantes, mas ele distingue exatamente quem é quem. Não sei se usa análise facial ou metadados das fotos, mas nunca se confundiu. O problema é que não há uma forma razoável de extrair essas informações de tags para fora do Google Photos, mesmo eu pagando por isso
Acho que está na hora de dar outra olhada. Não me lembro se photostructure ou photoprism tentam fazer reconhecimento facial, mas, mesmo que ainda não façam, em breve devem chegar a um nível parecido com o Google Photos, ou pelo menos ficar bons o suficiente para cortar a dependência do Google
Quanto a documentos e fotos/vídeos, tudo bem, mas e música? Para o bem ou para o mal, faz uns 10 anos que não gerencio diretamente uma coleção de músicas como arquivos. Hoje em dia existe algum sistema de biblioteca para música mais profundamente integrado ao conteúdo do que simples “arquivos no disco”, como paperless ou photoprism?
O meu jeito é assim
Itens relacionados a GUI ficam em maiúsculas, e itens relacionados a CLI ficam em minúsculas. Eu prefiro algo como
~/documents, mas o pessoal de GUI insiste em maiúsculas, então simplesmente aceitei. Quase nunca preciso misturar os dois, então não é um grande problema~/dotfilesé o diretório de dotfiles que gerencio com Git. Crio links simbólicos como~/.zshrc -> dotfiles/zshrc. Não uso nenhum software de gerenciamento separado, apenas crio links. Antes eu usava~/.dotfiles, mas acho que faz mais sentido deixá-lo visível~/projectsé o diretório de projetos.~/projects/testé para projetos de teste descartáveis, só para verificar algo;~/projects/myé para projetos pessoais;~/projects/companyé para projetos da empresa onde trabalho atualmente. Às vezes trabalho com várias empresas, meio como freelancer, então preciso dessa separação~/tmpé o diretório para todo trabalho descartável. Tenho uma função de shell chamadamkcdtmp, que cria um diretório com a data atual, como~/tmp/240419, e entra nele. É um método realmente bom. Prefiro comprar um disco grande e deixar o lixo para trás de uma forma minimamente organizada, então quase nunca limpo. Se eu precisar de algo de ontem ou do mês passado, sei onde está, e foi a coisa que mais ajudou a organizar trabalhos temporários. Se necessário, também posso criar~/tmp/whatever, e de qualquer forma é tudo coisa para jogar foraNão uso
~/Desktop. Também quase não uso~/Documentse ainda preciso encontrar uma forma de organizá-lo. Coisas como notas curtas eu jogo no repositório GitHub que constrói meu site pessoal. Tentei vários apps de notas, mas um site simples em Markdown foi o que funcionou melhor para mimNunca consegui organizar meu trabalho de forma muito estruturada. Sempre há uma pilha de lixo circulando que, no fim, vira algo utilizável; então, em vez de lutar contra mim mesmo, decidi transformar esse lixo em lixo organizado
Essencialmente, meu computador é consumível. Tudo em
~/projectsestá no Git, e~/tmpé mais como um cache ou trabalho descartável sem muita importância. Tento organizar as coisas para não demorar muito a restaurar a partir de um estado limpo. Reinstalo o OS do zero com frequência e também troco bastante de sistema operacional e notebook; esse método é o que funciona melhor para mimUma das minhas grandes reclamações com o sistema de arquivos é que diretórios demais começam com D
Desktop, Dev, Downloads, Documents, Dropbox etc.
Pensei em mudar alguma coisa, mas, como o autor diz, muitos aplicativos são bem teimosos quanto a isso
/srcpara evitar esse problemaUso uma estrutura bem simples, mas que funciona bem para mim
Dentro de
projects/, crio pastas por ano, como2023/,2024/, e cada projeto recebe um prefixo de mês+dia, como0000-something/,0312-other-project/,0419-hn-comment/Todo ano crio uma pasta do ano e, quando quero destacar um projeto de longo prazo no topo, coloco
0000ou deixo só a data como00É simples e funciona em qualquer OS. No Linux, uso alguns scripts auxiliares
Também é fácil criar rapidamente um diretório para mover arquivos da pasta de downloads, e, mantendo a hierarquia em apenas um nível, fica fácil encontrar as coisas. Acho melhor do que padrões como
YYYY/MM/DD, que adicionam mais um nível para o mêsNo diretório de nível superior, normalmente deixo o que estou trabalhando no momento. É algo como “hoje” ou “esta semana”
Quando vou arquivar algo fora dessa janela de tempo, por exemplo hoje, crio uma pasta em um formato como
041924e movo para lá todos os arquivos criados naquele diaEm geral, considerando a expectativa de vida humana, não vejo necessidade de usar uma string como
2024. Não acho que vou viver até 2100, e nada antes de 2000 é relevante, então24bastaComo o tempo continua passando, o número de pastas arquivadas aumenta, mas elas são pequenas e fáceis de encontrar. Funciona especialmente bem quando você cria todos os dias arquivos-padrão que não são muito únicos
projects/ | 01.01.2017something/ | 01.01.2024other-project/ | 01.01.2023hn-comment/ | 01.01.2022Sobre backups, certa vez tentei configurar um Mac novo a partir de um backup do Time Machine, mas o Mac não conseguia ver nada dentro do backup do Time Machine
Ao entrar em contato com o suporte da Apple, ouvi que existe um bug raro em que o processo de instalação, às vezes, em vez de instalar a partir do backup, inicializa o backup do Time Machine
Felizmente eu tinha configurado o Backblaze, o que me salvou, mas restaurar centenas de gigabytes levou muito tempo
Hoje uso Time Machine, Backblaze e backup do iCloud, e de vez em quando empacoto tudo em um
.tgze envio para o S3Entre hífen e underline em nomes de arquivos e diretórios, concordo totalmente com o hífen
Usar hífen ao navegar no terminal é tão prático que acho que deveria ser o padrão. É muito melhor do que ter que digitar algo a mais toda vez para selecionar nomes de arquivo com underline, ou lidar com espaços
foo-bar-baz, e não é preciso apertar Shift ao digitar