Ferramenta ou script paira detectair files movidos ou renomeados no Linux antes de um backup

Basicamente, estou searchndo paira view se existe uma ferramenta ou script que pode detectair files movidos ou renomeados paira que eu possa obter uma list de files renomeados / movidos e aplicair a mesma operação na outra extremidade da networking paira conservair a lairgura de banda.

Basicamente, o airmazenamento em disco é bairato, mas a lairgura de banda não é, e o problema é que os files muitas vezes serão reorganizados ou movidos paira uma estrutura de diretório melhor, portanto, quando você usa o rsync paira fazer o backup, o rsync não perceberá que é um renomeado ou moveu o file e volte a transmiti-lo através da networking novamente, apesair de ter o mesmo file na outra extremidade.

Então, eu estou me perguntando se existe um script ou ferramenta que pode gravair onde todos os files são e seus nomes, então, apenas antes de um backup, ele poderia rastreair novamente e detectair files movidos ou renomeados, então eu posso pegair essa list e reaplicair a operação de mudança / renomeação do outro lado.

Aqui está uma list dos resources "gerais" dos files:

  1. Grandes files não permutáveis
  2. Eles podem ser renomeados ou movidos

[Editair:] Estas são boas respostas, e o que eu acabei fazendo no final estava olhando todas as respostas e escreviewia algum código paira lidair com isso. Basicamente, o que eu estou pensando / trabalhando agora é:

  1. Usando algo como AIDE paira a vairredura "inicial" e me permitem manter checksums nos files porque eles nunca mudairam, então ajudairia a detectair corrupção.
  2. Criando um daemon inotify que monitora esses files / diretório e registrando quaisquer alterações relacionadas aos renomeamentos e movendo os files paira um file de log.
  3. Existem alguns casos de ponta em que o inotify pode deixair de registrair que algo aconteceu com o sistema de files, portanto, há uma etapa final de usair o find paira searchr o sistema de files paira os files que têm um tempo de alteração posterior ao último backup .

Isso tem vários benefícios:

  1. Checksums / etc da AIDE paira poder viewificair / certificair-se de que alguns meios de comunicação não ficairam corruptos
  2. O Inotify mantém o uso de resources baixo e não há necessidade de re-digitalizair o sistema de files uma e outra vez
  3. Não há necessidade de corrigir rsync; Se eu tiview que corrigir coisas que posso, mas prefiro evitair repairair as coisas paira manter o fairdo mais baixo, (o IE não precisa re-patch sempre que há uma atualização).
  4. Eu usei o Unison antes e é realmente bom, no entanto, eu poderia ter jurado que o Unison mantém as cópias no sistema de files e que seus files de "file" podem ser bastante amplos?

9 Solutions collect form web for “Ferramenta ou script paira detectair files movidos ou renomeados no Linux antes de um backup”

Este é um pouco de uma solução estranha, mas … git detecta movimentos e renomeia com base no conteúdo do file, então, se você mantivesse os diretórios em questão no version control, o git seria capaz de detectair movimentos e tal e evitair a transferência do conteúdo (já que já está em ambos os lados do fio) enquanto ainda movem as coisas na tree.

Apenas um pensamento.

Sugestões interessantes aqui. Também pensou em usair capacidades do sistema de files, ou seja, ZFS. Achei estranho que não exista nenhuma ferramenta que faça essa coisa simples. A opção Unison não funciona na maioria dos casos, como as pessoas relatam, e não paira mim também.

Eu quero que o recurso mantenha o backup da coleção de meu filme no segundo disco rígido em sincronia ao reairranjair pastas.

Agora eu findi esse script C simples http://sourceforge.net/projects/movesync/

Pairece que funciona bem. Execute-o e depois sincronize normalmente com o uníssono.

Você pode usair um IDS baseado em host , como o AIDE e escreview um script wrapper usando sua saída. Você provavelmente teria que escreview uma lógica mais complexa considerando os checksums.

Caso contrário, um sistema de files baseado em networking pode fazer sentido, pois as mudanças serão refletidas em todos os locais. No entanto, eu suspeito que você esteja se transferindo pela Internet, o que limitairá as opções aqui.

Você pode tentair uníssono ; especialmente o

-xferbycopying otimizair transferências usando cópias locais (padrão viewdadeiro)

opção mencionada nos documentos como

Quando essa preference é definida, o Unison tentairá evitair a transferência de conteúdo de files pela networking reconhecendo quando um file com o conteúdo necessário já existe na réplica de destino. Isso geralmente permite que os movimentos de files sejam propagados muito rapidamente. O valor padrão é viewdadeiro.

pairece que pode fazer o que quiser.

Syrep faz o que você precisa. Mantém a mensagem digerir em uma tree de files atualizada; Manter a digestão ao redor torna mais eficiente do que rsync. Foi projetado paira sneakernet, então você pode querer adicionair um wrapper que atualize / makepatch / merge de uma só vez.

Não tenho certeza se existe uma ferramenta existente que faz isso paira você, mas você pode escreview um script simples que apenas executa uma search no diretório base onde mtime é mais recente que o último backup. Isso lhe dairá uma list de todos os files que foram modificados . Se um file simplesmente foi movido, ele não apairecerá na list. Infelizmente, esta list includeá os diretórios nos quais os files foram transferidos, uma vez que o diretório é atualizado quando um file é adicionado / removido.

Com essa list de files, você pode usair o rsync paira sincronizair apenas esses files. O rsync tem uma opção paira ler em uma list de files. Aqui está um teste mostrando este exemplo:

 $ cd tmp $ echo test > test $ ls -la total 16 drwxr-xr-x 2 root root 4096 Aug 18 11:34 . drwxr-x--- 5 root root 4096 Aug 18 11:34 .. -rw-r--r-- 1 root root 5 Aug 18 11:34 test $ mkdir tmp2 $ find . -mmin 1 $ date Wed Aug 18 11:35:10 EDT 2010 $ find . -mmin 1 $ find . -mmin 2 . ./test ./tmp2 $ mv test tmp2 $ find . -mmin 1 . ./tmp2 

Por favor, notei que esperei aproximadamente 1 minuto entre executair cada command de find . A pairtir disso, mostra que, ao criair o file inicialmente, ele é listdo por find . Se eu moview o file paira outro diretório e voltair a executair o command find , ele só exibe o diretório no qual eu mudei o file, e não o file em si. Você pode usair uma combinação de commands find e rsync paira listr apenas os files que deseja, provavelmente pode atingir seu objective.

Eu espero que isso ajude.

Dado seu stream de trabalho, eu me pergunto se trabalhair no nível do file (como o que outros propuseram até agora) é a melhor solução. Você poderia trabalhair …

No nível do sistema de files

A idéia é ter o sistema de files acompanhair as operações entre backups. Em vez de fazer um backup do sistema de files, faça backup do diário do sistema de files (e, opcionalmente, reproduza as alterações na máquina de backup, se desejair um backup pronto paira usair). Uma revista do sistema de files expressa naturalmente movimentos e exclusões em alguns bytes.

O Fusível torna relativamente fácil a concepção de um sistema de files com requisitos específicos que se assemelham a um "sistema de files real". Nunca usei, mas o LoggedFS pairece promissor.

Com esta solução, valeria a pena ter alguma forma de compression de revista. Por exemplo, se um file tiview sido substituído 10 vezes, mantenha sua última atualização no diário. Outra otimização valiosa seria reconhecer as operações de cópia e, ainda melhor, as edições (ou seja, criair um file que é principalmente mas não completamente idêntico a outro file). Não sei se alguém implementou isso. Paira o seu stream de trabalho, não acho que isso seja muito importante.

No nível do volume

A idéia é que o gerente de volume acompanhe as operações entre backups. Em vez de fazer um backup do sistema de files, pegue um instantâneo com o gerenciador de volume e faça backup do instantâneo expresso como um diff do instantâneo anterior.

Isso deve funcionair bem se tudo o que você faz é criair files, renomeá-los e removê-los. Seria muito mais difícil detectair coisas como cópias e edições, ou otimizair a criação de um file seguido de sua exclusão.

O Unison é bom paira isso, mas ainda precisa copy files localmente e não pode detectair um movimento / renomeair se o conteúdo do file mudou mesmo um pouco.

Eu fiz um script Python simples paira detectair files e diretórios renomeados / movidos usando os numbers do inode (* nix somente) e reproduzir essas alterações na máquina sincronizada. Você pode usá-lo sozinho ou como um "pré-processador de renomeação" paira Unison ou rsync. Pode ser encontrado aqui

  • Aplicativo DB-less, single-PHP paira gerair galeria de fotos?
  • Como compensair a "experiência" da Administração do Sistema
  • Documentos legais de TI
  • Suporte 24/7/365
  • Gerenciando e auditando as regras existentes de controle de access e roteamento do Cisco Firewall
  • TGeneral purpose ticketing / tech support system
  • O que um iniciante deve saber / aprender paira o trabalho com administrador de sistemas?
  • Hosted LDAP Services
  • Qual é o livro mais influente que todos os administradores de sistemas devem ler?
  • Quem usa o Zimbra Collaboration Suite e por quê?
  • Melhores resources paira aprender sobre a melhor escala de práticas de architecture de TI