У меня есть два каталога - один из более ранней резервной копии, а второй из последней резервной копии. Как сравнить, какие изменения были внесены в файлы в каталоге из последней резервной копии в Linux? Также как мне отображать изменения, например, в текстовых и php файлах - я думаю о чем-то вроде истории изменений в Википедии, где вы видите старую версию на одной стороне экрана и новейшую версию на другой, а изменения выделяются. Как мне этого добиться?
изменить: Как мне также сравнить удаленный реж с местным?
Из справочной страницы diff:
Если и from-file, и to-file являются каталогами, diff сравнивает соответствующие файлы в обоих каталогах в алфавитном порядке; это сравнение не является рекурсивным, если не задана опция -r или --recursive. diff никогда не сравнивает фактическое содержимое каталога, как если бы это был файл. Полностью указанный файл может не быть стандартным вводом, потому что стандартный ввод не имеет имени и понятие «файл с тем же именем» не применяется.
Итак, чтобы сравнить каталоги: diff --brief -r dir1 dir2
Чтобы сравнить файлы рядом: diff --side-by-side file1 file2
Вы действительно хотите объединить силу rsync
снизить потребление полосы пропускания с помощью diff
чтобы дать вам гибкие, ну ммм, различия.
Так что примерно так:
cp -R $local $bak
rsync $server:$remdir/* $local/
rsync $local/ $server:$remdir/*
diff -wur $local $bak
Я думаю, вы могли бы немного подправить это, если бы вы часто делали это, используя rsync
вместо того cp
в первой строке - очевидно, в последней строке у вас есть все возможности diff
чтобы отформатировать его как угодно. Вероятно, с y в случае OPs
Обратной стороной этого подхода является то, что вы в конечном итоге используете в два раза больше локального пространства, но меньше чем 1 доллар за гигабайт, кого это волнует?
Предполагая:
www1
, по сравнению с удаленным www2
www1
удаленно www2
www1
и удаленный www2
find /var/www/html/ -name "*" -exec md5sum -b {} \; | grep -v "/var/www/html/exclude_this dir" > local.md5 ssh www2 "find /var/www/html/ -name '*' -exec md5sum -b {} \; | grep -v /var/www/html/exclude_this dir > remote.md5" scp www2:remote.md5 . diff local.md5 remote.md5
Делать diff old_dir new_dir > diff.txt
для параллельных различий на одном сервере.
Для удаленных файлов:
Например: ABC - существующий сервер, XYZ - ваш удаленный сервер, а имя каталога - 123.
Шаг 1: Переименуйте существующий каталог 123 на сервере ABC как 123_ABC.
ABC:/Home > mv 123 123_ABC
Шаг 2: Создайте новый каталог на сервере ABC:
ABC: > mkdir 123_XYZ
Шаг 3: Скопируйте все файлы из каталога 123 на сервере XYZ в каталог 123_XYZ на сервере ABC:
XYZ/123 > scp * userid@ABC: /123_XYZ
Это скопирует все файлы из каталога на вашем сервере XYZ в каталог ABC server / 123_XYZ.
Шаг: 4: Сделайте разницу между обоими каталогами:
Теперь перейдите на сервер ABC и выполните различие между 123_ABC и 123_XYZ.
ABC > diff 123_ABC 123_XYZ > diff.txt
Приведенная выше команда сохранит результаты сравнения в файле diff.txt по тому же пути.
Тогда вы можете сравнить различия.
Спасибо,
Мехул
Помощник Advanced Intrusion Detection Environment (AIDE) - это средство проверки целостности файлов для операционных систем UNIX. Его цель - предоставить отчеты о целостности данных в поддерживаемых файловых системах. Запустив AIDE несколько раз на целевом хосте, вы можете определить, какие файлы меняются. Запустив AIDE несколько раз на разных хостах, вы можете определить, какие файлы и разрешения отличаются. Затем используйте инструмент gui diff для "разных" файлов.
Или используйте графический интерфейс, например meld, guiffy, kdiff3, diff, vimdiff, gvimdiff, Emacs, Kompare, Diffuse, Easydiff, TkDiff или xxdiff. Большинство из них будут делать различия в каталогах в дополнение к файлам. Вам нужно будет смонтировать удаленный диск с помощью NFS, SMBFS или SSHFS, как упоминали другие.
Или вы можете использовать два файла с выводом списка файлов. А затем сравните эти два файла. Например:
/path/to/compare/remote$: ls > remote-files
/path/to/compare/local$: ls > local-files
Скачайте один из файлов.
-rw-r--r-- 1 1015 1015 26624 2005-06-14 13:10 FILE.TXT
в FILE.TXT
Используйте diff (diff -y remote-files local-files > diff-files
), чтобы сравнить их рядом. Откройте diff-файлы и проверьте их. Каждая строка с символом> означает отдельный файл.