Я хочу сравнить две директории, одна локальная, а другая на другой машине.
Как я могу это сделать? Могу ли я сделать это с помощью diff
?
Я хочу сравнить две директории, одна локальная, а другая на другой машине.
Как я могу это сделать? Могу ли я сделать это с помощью diff
?
Я могу думать о двух способах здесь ..
Смонтируйте удаленный каталог локально, а затем используйте diff, как на локальной машине.
Используйте rsync
:
rsync -avz --dry-run remote-user@remote-machine:remote-dir local-dir
Это покажет вам файлы, которые отличаются, но не покажет вам фактическую diff
. Я думаю, что Unison также поддерживает diff, но я никогда не использовал его, и он, похоже, больше не разрабатывается.
Если вы просто хотите определить, идентичны они или нет, что-то вроде
cd <directory>
find . -type f | sort | xargs sha1sum | sha1sum
... должен дать вам единую контрольную сумму по всему содержимому (кроме пустых подкаталогов). Таким образом, вы можете запустить это на обеих машинах и сравнить результаты.
Обратите внимание, что использование diff
потребует передачи всего содержимого удаленного каталога по сети, что может стать чрезмерно медленным при наличии больших файлов или большого количества файлов.
Я бы рекомендовал сначала определить, какие файлы различаются на этих двух машинах (с помощью rsync -n --delete
(-n
заставляет его сообщать вам только то, что он будет делать, но на самом деле не делает этого; --delete
сообщит вам, если любые файлы существуют в месте назначения, но не в источнике, потому что он захочет их удалить) или путем сравнения md5sum
s. Если вы ищете , как они отличаются (а не только , если они разные), я бы затем использовать diff
только на тех конкретных файлов , чтобы увидеть , что различия.
Да, вы можете сделать это с помощью diff! Приложения пользовательского пространства, такие как diff, не знают (и не должны знать), является ли каталог локальным или удаленным.
Я нашел инструмент под названием "UNISON". Это очень хороший инструмент и имеет много вариантов.