7

Я хочу сравнить две директории, одна локальная, а другая на другой машине.

Как я могу это сделать? Могу ли я сделать это с помощью diff?

5 ответов5

4

Я могу думать о двух способах здесь ..

  1. Смонтируйте удаленный каталог локально, а затем используйте diff, как на локальной машине.

  2. Используйте rsync:

rsync -avz --dry-run remote-user@remote-machine:remote-dir local-dir

Это покажет вам файлы, которые отличаются, но не покажет вам фактическую diff . Я думаю, что Unison также поддерживает diff, но я никогда не использовал его, и он, похоже, больше не разрабатывается.

3

Если вы просто хотите определить, идентичны они или нет, что-то вроде

cd <directory>
find . -type f | sort | xargs sha1sum | sha1sum

... должен дать вам единую контрольную сумму по всему содержимому (кроме пустых подкаталогов). Таким образом, вы можете запустить это на обеих машинах и сравнить результаты.

1

Обратите внимание, что использование diff потребует передачи всего содержимого удаленного каталога по сети, что может стать чрезмерно медленным при наличии больших файлов или большого количества файлов.

Я бы рекомендовал сначала определить, какие файлы различаются на этих двух машинах (с помощью rsync -n --delete (-n заставляет его сообщать вам только то, что он будет делать, но на самом деле не делает этого; --delete сообщит вам, если любые файлы существуют в месте назначения, но не в источнике, потому что он захочет их удалить) или путем сравнения md5sum s. Если вы ищете , как они отличаются (а не только , если они разные), я бы затем использовать diff только на тех конкретных файлов , чтобы увидеть , что различия.

0

Да, вы можете сделать это с помощью diff! Приложения пользовательского пространства, такие как diff, не знают (и не должны знать), является ли каталог локальным или удаленным.

0

Я нашел инструмент под названием "UNISON". Это очень хороший инструмент и имеет много вариантов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .