Como fazer backup de arquivos em vários diretórios com o git?

2

O exemplo abaixo é simplificado para mostrar o núcleo do problema, não o problema em si (minha árvore de arquivos é mais complicada do que isso).

Digamos que eu tenha dois arquivos para backup. um em ~/somedir/otherdir , o outro em ~/otherdir/somedir/ . Eu quero fazer backup de arquivos de ambos os diretórios em um repositório git. Como posso fazer isso? Links suaves só carregam informações sobre onde o arquivo é armazenado, não o arquivo real, enquanto os hard links são um pouco estranhos para mim. Este é um caso em que os links físicos devem ser usados?

Esclarecimento: Eu quero usar git por quatro razões: Eu quero armazenar dotfiles / scripts / configurações que são arquivos de texto e acompanhar as mudanças ao longo do tempo, eu sei git, eu tenho um repositório git privado que pude use para armazená-los e quero poder compartilhar esses arquivos em vários computadores.

    
por MatthewRock 03.05.2016 / 13:57

1 resposta

5

Se você não se importa em mover os arquivos ...

Você pode fazer isso movendo os arquivos para um repositório git e ligando-os simbolicamente a seus locais antigos; você acabaria com

  • ~/gitrepo/somedir/otherdir/file1 movido de ~/somedir/otherdir/file1
  • ~/gitrepo/otherdir/somedir/file2 movido de ~/otherdir/somedir/file2
  • um link simbólico de ~/somedir/otherdir/file1 para ~/gitrepo/somedir/otherdir/file1
  • um link simbólico de ~/otherdir/somedir/file2 para ~/gitrepo/otherdir/somedir/file2

Você pode, então, com segurança, cometer os arquivos no repositório git, e manipulá-los usando o git, e qualquer coisa usando os caminhos de arquivos antigos verá o que estiver atual na área de trabalho do git. Vincular os arquivos ao contrário, ou usando hard links, seria perigoso porque qualquer operação git que reescreva o arquivo (alterando as ramificações, revertendo para uma versão anterior ...) quebraria o link. (Espero que isso explique porque os hard links não são realmente uma solução viável.)

Com esse tipo de cenário, você terá que ter cuidado com programas que reescrevem arquivos completamente, quebrando links; muitos editores de texto fazem isso, assim como ferramentas como sed -i etc. Uma abordagem mais segura seria mover as pastas inteiras para o repositório git e criar links simbólicos para os diretórios.

Se você quiser manter os arquivos no lugar ...

Outra possibilidade é criar um repositório git no seu diretório home, dizer ao git para ignorar tudo e, em seguida, adicionar com força os arquivos que você deseja acompanhar:

cd
git init
echo '*' > .gitignore
git add -f .gitignore
git commit -m "Initialise repository and ignore everything"
git add -f somedir/otherdir/file1
git commit -m "Add file1"
git add -f otherdir/somedir/file2
git commit -m "Add file2"

Depois de fazer isso, você poderá acompanhar facilmente as alterações nos arquivos adicionados explicitamente, mas o git não considerará novos arquivos. Com essa configuração, deve também ser seguro ter outros repositórios git em subdiretórios do seu diretório home, mas eu não verifiquei em detalhes ...

    
por 03.05.2016 / 14:04

Tags