Eu tenho uma árvore de diretórios que gostaria de fazer backup em discos ópticos. Infelizmente, excede o tamanho de qualquer disco (cerca de 60 GB). Estou procurando um script que divida essa árvore em pedaços de tamanho apropriado com links físicos ou outros enfeites (deixando o original intocado). Eu poderia então alimentar essas árvores de tamanho pequeno no processo de backup (adicionar redundância de PAR2, etc.).
Não é um roteiro chique, mas parece que já pode ter sido feito. Sugestões?
(Expandir e escrever em uma etapa é um impedimento, porque quero fazer mais coisas antes que os arquivos sejam gravados.)
backup
disk-usage
split
burning
Reid
fonte
fonte
par2
proteção.Respostas:
Existe um aplicativo desenvolvido para isso:
dirsplit
Geralmente vive em
cdrkit
oudirsplit
pacotes.Ele pode criar pastas prontas para uso com links para criar facilmente DVDs com o K3b ou outro software da GUI
fonte
genisoimage
pacote.Você também pode experimentar o fpart , uma ferramenta que escrevi (licenciada em BSD): https://sourceforge.net/projects/fpart/
fonte
Certa vez, fiz um roteiro feio para um propósito semelhante. É apenas uma brincadeira, mas quando escrevi não me importei com o tempo de execução ou a beleza. Tenho certeza de que existem mais versões "produtificadas" do mesmo conceito, mas se você deseja obter algumas idéias ou algo para começar a invadir, aqui vai (fiz isso em 2008, use por sua conta e risco!): - )
Eu acho que o resultado foi compartilhado através do samba para um host do Windows que gravou discos dele. Se você usar o item acima inalterado, poderá usar
mkisofs
outro arquivador que resolva links simbólicos.fonte
\[?*
). Leitura sugerida: não analise a saída de ls , $ VAR vs $ {VAR} e cite ou não . Observe que eu não testei o script resultante. Se você não entender minhas alterações, não hesite em perguntar.[
, em oposição atest
, embora) ...Certa vez, escrevi um script para resolver um problema semelhante - chamei-o de "distribuir" (você pode ler o código principal do script ou o arquivo com a mensagem de ajuda ou fazer o download como um pacote ); a partir de sua descrição :
Ele executa todo o processo em várias etapas: em uma etapa, cria os "layouts" de disco mais avançados, usando links simbólicos para os arquivos originais - para que você possa intervir e alterar as futuras árvores de disco.
Os detalhes sobre seu uso podem ser lidos na mensagem de ajuda impressa pelo script (ou examinando o código-fonte).
Ele foi escrito com um caso de uso mais complicado em mente (emitir atualizações como um "diff" - o conjunto de novos arquivos adicionados - para a coleção de arquivos gravada originalmente), por isso inclui um estágio inicial extra, a saber, "consertar "o estado atual da coleção de arquivos (por uma questão de simplicidade, ele é replicado pela coleção original de arquivos por meio de links simbólicos) em um local de trabalho especial para salvar os estados da coleção; depois, em algum momento no futuro, ele poderá criar uma diferença entre um estado atual futuro da coleção de arquivos e esse estado salvo). Portanto, embora você possa não precisar desse recurso, não é possível pular esse estágio inicial, o AFAIR.
Além disso, não tenho certeza agora (escrevi alguns anos atrás) se trata bem de árvores complexas ou se deve dividir apenas diretórios de arquivos simples (um nível). (Verifique a mensagem de ajuda ou o código-fonte para ter certeza; também procurarei isso um pouco mais tarde, quando tiver algum tempo.)
O material relacionado ao APT é opcional, portanto, não preste atenção, pois ele pode preparar coleções de pacotes a serem usadas pelo APT, se você não precisar disso.
Se você se interessar, é claro, sinta-se à vontade para reescrevê-lo de acordo com suas necessidades ou sugerir melhorias.
(Observe que o pacote inclui patches úteis adicionais não aplicados na lista de códigos apresentada no repositório Git vinculado acima!)
fonte
distribute
que resolve a tarefa essencial feitas sobre aqui.Não devemos esquecer que a essência da tarefa é realmente bastante simples; conforme apresentado em um tutorial sobre Haskell (que é escrito sobre o trabalho da solução para esta tarefa, aprimorado de forma incremental)
(do guia Mochileiros para Haskell, capítulo 1 )
(Além disso, na sua pergunta, você deseja ajustar (editar) os layouts de disco resultantes e usar uma ferramenta para gravá-los.)
Você pode reutilizar (adaptar e reutilizar) uma variante simples do programa desse tutorial Haskell para dividir sua coleção de arquivos.
Infelizmente, na
distribute
ferramenta que eu mencionei aqui em outra resposta , a simplicidade da tarefa divisão essencial não é compensada pela complexidade e bloatedness da interface do usuário dedistribute
(porque foi escrito para combinar várias tarefas, embora realizada em etapas, mas ainda assim combinada, não da maneira mais limpa que eu conseguia pensar agora).Para ajudá-lo a usar seu código, aqui está um trecho do código de referência
distribute
(na linha 380 ) que serve para executar esta tarefa "essencial" de dividir uma coleção de arquivos:( leia mais após a linha 454 )
Observe que a
eatFiles
função prepara os layouts dos futuros discos como árvores nas quais as folhas são links simbólicos para os arquivos reais. Portanto, é um requisito que você possa editar os layouts antes de gravar. Omkisofs
utilitário tem uma opção para seguir links simbólicos, que são de fato empregados no código da minhamkiso
função .O script apresentado (que você pode pegar e reescrever para suas necessidades, é claro!) Segue a idéia mais simples: somar o tamanho dos arquivos (ou, mais precisamente, os pacotes no caso de
distribute
) apenas na ordem em que foram listados, não faça qualquer rearranjo.O "Guia do Hitchhikers para Haskell" leva o problema de otimização mais a sério e sugere variantes de programa que tentariam reorganizar os arquivos de maneira inteligente, para que se encaixem melhor em discos (e exijam menos discos):
(leia mais no capítulo 3 e mais).
Outras ferramentas inteligentes
Foi-me dito também que o Debian usa uma ferramenta para tornar seus CDs de distribuição mais inteligentes que minhas
distribute
coleções de pacotes wrt: seus resultados são melhores porque se preocupam com as dependências entre pacotes e tentam fazer a coleção de pacotes o primeiro disco fechado sob dependências, ou seja, nenhum pacote do 1º disco deve exigir um pacote de outro disco (ou pelo menos, eu diria, o número dessas dependências deve ser minimizado).fonte
O backup2l pode fazer muito deste trabalho. Mesmo se você não usar o pacote diretamente, poderá obter algumas idéias de script.
fonte
O
rar
arquivador pode ser instruído a dividir automaticamente o arquivo morto em pedaços de um tamanho específico com a-vsize
bandeira.Arquivar essa árvore de diretórios nomeada
foo
em pedaços de, digamos, 500 megabytes cada, especificados por vocêrar a backup.rar -v500m foo/
fonte
rar
, a menos que você descompacte cada "parte" novamente em seu próprio diretório, o que obviamente não funcionará, pois as partes não foram projetadas dessa maneira e não são divididas nos limites do arquivo.tar
+split
, também há dar ; aqui está a observação sobre seu recurso relevante: "(SLICES) foi projetado para ser capaz de dividir um arquivo em várias mídias removíveis, independentemente do número e do tamanho". Comparado atar
+split
, presumo, ele permite algumas maneiras mais fáceis de acessar os arquivos arquivados. (BTW, também possui um recurso semelhantedistribute
: "BACKUP DIFERENCIAL" e "INSTANTÂNEO DE ÁRVORE DIRETÓRIO", mas é possível que não goste que o resultado seja um formato especial, não um ISO com uma árvore de diretórios.)