Eu tenho duas pastas:
- ORIGINAL/
- ORIGINAL_AND_MY_CHANGES /
Meu amigo tem uma cópia de ORIGINAL /. Gostaria de gerar MY_CHANGES.tgz - ele deve conter apenas arquivos novos / alterados de ORIGINAL_AND_MY_CHANGES / em comparação com ORIGINAL /. Assim, meu amigo pode descompactá-lo em sua cópia de ORIGINAL / e obter ORIGINAL_AND_MY_CHANGES /. Como posso fazer isso?
PS Eu tentei, diff
mas ele não pode salvar dados binários e rsync --link-dest
- gera links físicos que são inúteis no arquivo.
PPS No meu caso, o tempo de modificação não pode ser usado para decidir qual arquivo foi alterado.
Respostas:
Com rsync
O que você está fazendo é essencialmente um backup incremental: seu amigo (seu backup) já possui os arquivos originais e você deseja criar um arquivo que contenha os arquivos que você alterou desse original.
O Rsync possui recursos para backups incrementais.
-a
significa preservar todos os atributos (horários, propriedade etc.).-c
significa comparar o conteúdo do arquivo e não confiar na data e no tamanho.--compare-dest=/some/directory
significa que arquivos idênticos nesse diretório e na árvore de origem não são copiados. Observe que o caminho é relativo ao diretório de destino.O Rsync copia todos os diretórios, mesmo que nenhum arquivo termine lá. Para se livrar desses diretórios vazios, execute
find -depth CHANGES_ONLY -type d -empty -delete
(ou se vocêfind
não tiver-delete
e-empty
executefind -depth CHANGES_ONLY -exec rmdir {} + 2>/dev/null
).Em seguida, faça o arquivo morto a partir do
CHANGES_ONLY
diretórioO caminho para pedestres
Atravesse o diretório com seu arquivo. Ignore arquivos idênticos ao original. Crie diretórios no destino, conforme necessário. Copie os arquivos alterados.
fonte
ORIGINAL
e criarORIGINAL_AND_MY_CHANGES
uma filial? Em seguida, descubraCHANGES
com um comando scm.ORIGINAL
, são fontes da plataforma Android (3GB, arquivos 126000). Até a execução do rsync leva de 15 a 20 minutos. Eu acho que a adição de todas essas coisas sob controle de origem levará muito espaço e tempo.O comando
produziria um arquivo de lote contendo as alterações necessárias (sem modificar nada).
O patch pode ser aplicado em outro site, onde você pega o lote FILE, com
fonte