как проверить, что в linux две папки одинаковые - PullRequest
14 голосов
/ 18 января 2009

Я переместил веб-сайт с одного сервера на другой и скопировал файлы, используя SCP

Теперь я хочу убедиться, что все файлы скопированы. ОК.

Как мне сравнить сайты?

Считать файлы для папки?

Получить общий размер файлов для дерева папок?

или есть лучший способ сравнить сайты?

Пол

Ответы [ 10 ]

32 голосов
/ 06 мая 2013

Использование diff с рекурсивной -r и быстрой -q опцией. Это самый лучший и самый быстрый способ сделать это.

diff -r -q /path/to/dir1 /path/to/dir2

Он не скажет вам, в чем различия (удалите опцию -q, чтобы увидеть это), но он очень быстро сообщит вам, если все файлы одинаковы.

Если вывод не выводится, все файлы одинаковы, в противном случае будут перечислены разные файлы.

10 голосов
/ 18 января 2009

Если бы вы использовали scp, вы, вероятно, могли бы использовать rsync .

rsync не будет передавать файлы, которые уже обновлены, поэтому вы можете использовать его для проверки актуальности копии, просто повторно запустив rsync.

Если вы делали что-то подобное на старом хосте:

scp -r from/my/dir newhost:/to/new/dir

Тогда вы могли бы сделать что-то вроде

rsync -a --progress from/my/dir newhost:/to/new/dir

«-a» - это сокращение от «archive», которое выполняет рекурсивное копирование и сохраняет права доступа, права собственности и т. Д. Обратитесь к man-странице для получения дополнительной информации, поскольку она может делать много умных вещей.

8 голосов
/ 18 января 2009
cd website
find . -type f -print | sort | xargs sha1sum

выдаст список контрольных сумм для файлов. Затем вы можете diff проверить, есть ли пропущенные / добавленные / другие файлы.

3 голосов
/ 18 января 2009

возможно, вы можете использовать что-то похожее на это:

find <original root dir> | xargs md5sum  > original
find <new root dir> | xargs md5sum  > new
diff original new
1 голос
/ 14 марта 2016

Добавить в ответ от Сидни. Не очень нужно отфильтровывать -type f и создавать хеш-код. В ответ на zidarsk8 вам не нужно сортировать, так как find, как и ls, сортирует имена файлов по алфавиту по умолчанию. Это работает и для пустых каталогов.

Подводя итог, топ-3 лучших ответов будут: (P.S. Хорошо сделать пробный прогон с rsync)

diff -r -q /path/to/dir1 /path/to/dir2

diff <(cd dir1 && find) <(cd dir2 && find)

rsync --dry-run -avh from/my/dir newhost:/to/new/dir
1 голос
/ 18 января 2009

Если вы использовали scp, вы, вероятно, также можете использовать rsync поверх ssh.

rsync -avH --delete-after 1.example.com:/path/to/your/dir 2.example.com:/path/to/your/

rsync выполняет контрольные суммы для вас.

Обязательно используйте опцию -n для выполнения пробного прогона. Проверьте страницу руководства.

Я предпочитаю rsync вместо scp или даже локальный cp, каждый раз, когда я могу его использовать.

Если rsync не поддерживается, md5sum может генерировать дайджесты md5, а md5sumc --check проверяет их.

0 голосов
/ 10 января 2014

Я бы добавил это к Дугласу Лидеру или Эйнеки, но, к сожалению, у меня недостаточно репутации, чтобы комментировать. В любом случае, их ответы великолепны, за исключением того, что они не работают с именами файлов с пробелами. Чтобы заставить это работать, сделайте

find [dir1] -type f -print0 | xargs -0 [preferred hash function] > [file1]

find [dir2] -type f -print0 | xargs -0 [preferred hash function] > [file2]

diff -y [file1] [file2]

Мне просто нравится экспериментировать с аргументом -W ### в diff и выводить его в файл, что облегчает его анализ и анализ в терминале.

0 голосов
/ 18 января 2009

Я переместил веб-сайт с одного сервера на другой. Я скопировал файлы, используя SCP

Вы можете сделать это с помощью rsync, это здорово, если вы просто хотите что-то отразить.

/ Johan

Обновление: похоже, @rjack победил меня ответом rsync за 6 секунд: -)

0 голосов
/ 18 января 2009

Попробуйте рекурсивно ваш каталог. Вы получите хорошее резюме, если что-то не так в одном из каталогов.

0 голосов
/ 18 января 2009

Создание контрольных сумм для всех файлов, например, используя md5sum . Если они одинаковы для всех файлов и нет ни одного файла, все в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...