




Сделайте контрольные суммы для всех файлов, например, используя md5sum. Если они все одинаковы для всех файлов и ни один файл не отсутствует, все в порядке.
Попробуйте рекурсивно различие вашего каталога. Вы получите хорошее резюме, если в одном из каталогов что-то изменится.
cd website
find . -type f -print | sort | xargs sha1sum
создаст список контрольных сумм для файлов. Затем вы можете diff, чтобы увидеть, есть ли какие-либо отсутствующие / добавленные / другие файлы.
возможно, вы можете использовать что-то подобное:
find <original root dir> | xargs md5sum > original
find <new root dir> | xargs md5sum > new
diff original new
Если вы использовали scp, вы, вероятно, также можете использовать rsync поверх ssh.
rsync -avH --delete-after 1.example.com:/path/to/your/dir 2.example.com:/path/to/your/
rsync делает за вас контрольные суммы.
Обязательно используйте параметр -n для пробного запуска. Проверьте страницу руководства.
Я предпочитаю rsync, а не scp или даже local cp, каждый раз, когда могу его использовать.
Если rsync не подходит, md5sum может генерировать дайджесты md5, а md5sumc --check проверит их.
I have been move a web site from one server to another I copied the files using SCP
Вы можете сделать это с помощью rsync, это здорово, если вы просто хотите что-то отразить.
/ Йохан
Обновление: похоже, что @rjack победил меня с ответом rsync за 6 секунд :-)
Если бы вы использовали 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', которое выполняет рекурсивное копирование и сохраняет разрешения, права собственности и т. д. Проверьте страница руководства для получения дополнительной информации, так как он может делать много умных вещей.
Использование diff с рекурсивной опцией -r и быстрой опцией -q. Это лучший и самый быстрый способ сделать это.
diff -r -q /path/to/dir1 /path/to/dir2
Он не скажет вам, в чем разница (удалите параметр -q, чтобы увидеть это), но он очень быстро сообщит вам, все ли файлы одинаковы.
Если вывод не отображается, все файлы одинаковы, в противном случае будут перечислены разные файлы.
Может ли он обнаружить разницу, если один файл поврежден, а другой исправен?
Я бы добавил это к Дугласу Лидеру или Эйнеки, но, к сожалению, у меня недостаточно репутации для комментариев. В любом случае, их ответы прекрасны, за исключением того, что они не работают для имен файлов с пробелами. Чтобы это сработало, сделайте
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 и выводить его в файл, который легче анализировать и понимать в терминале.
этот метод не сможет проверить пустые каталоги, и вам нужно отсортировать результат.
Чтобы добавить в ответ Сидни. Нет необходимости отфильтровывать -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
Кто-нибудь знает, сколько времени это займет (приблизительно) для каталога 2 ТБ?