Tentando combinar o comando diff e exibir a última modificação entre dupes

0

Eu estou tentando fazer algo um pouco único, e não consigo encontrar a linha de comando do terminal correta para usar.

Estou tentando resolver essencialmente o seguinte problema:

Eu tenho dois volumes de dados que existem em servidores separados. Esses volumes supostamente possuem muitos arquivos duplicados. No entanto, devido à natureza desses servidores, não posso excluir programaticamente nada, pois cada um é seu próprio caso de uso de borda. Portanto, devo encontrar as duplicatas entre os dois volumes e, em seguida, organizar qual dos dois volumes tem a "última e melhor" versão modificada do dupe e investigar manualmente cada um deles.

Por uma questão de simplicidade, vamos apenas chamar os volumes "Folder1" e "Folder2"

Eu cheguei até aqui através do Terminal na minha máquina Mac:

diff -rs /Folder1 /Folder2 > diff-test1.txt 

Isso me dá a identidade das duplicatas entre os dois, mas não me diz qual volume tem o 'mais recente e maior'. Alguém pode ajudar?

    
por New-2-Terminal 24.01.2014 / 22:56

1 resposta

0

Eu usaria dois comandos rsync --dry-run em vez de um único diff . Por exemplo, dados cinco arquivos em que alguns são mais recentes em Folder1 e alguns são mais recentes em Folder2 ,

$ ls -port Folder?/*/*
-rw-r--r--  1 Deditos   0 25 Jan 12:39 Folder2/subfolder/file03.txt
-rw-r--r--  1 Deditos   0 25 Jan 12:39 Folder2/subfolder/file02.txt
-rw-r--r--  1 Deditos   0 25 Jan 12:39 Folder2/subfolder/file01.txt
-rw-r--r--  1 Deditos   0 25 Jan 12:39 Folder1/subfolder/file05.txt
-rw-r--r--  1 Deditos   0 25 Jan 12:39 Folder1/subfolder/file04.txt
-rw-r--r--  1 Deditos   0 25 Jan 12:39 Folder1/subfolder/file03.txt
-rw-r--r--  1 Deditos  29 25 Jan 12:44 Folder1/subfolder/file01.txt
-rw-r--r--  1 Deditos  29 25 Jan 12:44 Folder1/subfolder/file02.txt
-rw-r--r--  1 Deditos  29 25 Jan 13:13 Folder2/subfolder/file04.txt
-rw-r--r--  1 Deditos  29 25 Jan 13:13 Folder2/subfolder/file05.txt

Você pode verificar o que o rsync [SRC] [DEST] poderia copiar de um diretório de origem para atualizar um diretório de destino:

$ rsync --dry-run -ariu ./Folder1/ ./Folder2/
.d..t.... ./
.d..t.... subfolder/
>f.st.... subfolder/file01.txt
>f.st.... subfolder/file02.txt
$ rsync --dry-run -ariu ./Folder2/ ./Folder1/
.d..t.... ./
.d..t.... subfolder/
>f.st.... subfolder/file04.txt
>f.st.... subfolder/file05.txt

Isso também fornece algumas informações sobre a natureza da diferença entre os arquivos, por exemplo, >f.st.... significa que o tamanho ( s ) e os timestamps ( t ) são diferentes.

NB Se você omitir o --dry-run flag, então rsync tentará a transferência, então tenha cuidado com isso.

    
por 25.01.2014 / 14:45