Цвет в Вашем приглашении оболочки (lpeabody@webtest
) прибывает из PS1
переменная оболочки:
.bashrc
на Вашей Ubuntu машина установит подсказку, чтобы окрасить, если она обнаружит что Ваш $TERM
xterm-color
.
.bashrc
на Вашем CentOS машина, кажется, не делает это.
редактирование для исправления и ясности опции - я забыл '-резюме'
diff -rs --brief "$dir1" "$dir2"
-r, --recursive recursively compare any subdirectories found
-s, --report-identical-files report when two files are the same
-q, --brief report only when files differ
--speed-large-files assume large files and many scattered small changes
и добавьте другие опции являться на вкус, в зависимости от того, что Вы сравниваете:
-i, --ignore-case ignore case differences in file contents
-b, --ignore-space-change ignore changes in the amount of white space
-B, --ignore-blank-lines ignore changes whose lines are all blank
--strip-trailing-cr strip trailing carriage return on input
--ignore-file-name-case ignore case when comparing file names
разность - RS считает каждый байт оригинала и копии, и сообщит о файлах, которые являются тем же.
Различный выходной формат определяется POSIX, таким образом, это довольно портативно. Можно хотеть добавить что-то как:
| кладите разность-out.1 для первого удара | grep-v-Ee 'Файлы.*, и.* идентичны'
Вы могли использовать chksums или хеши, но затем необходимо сохранить их sync'd с деревьями файла, таким образом, Вы вернулись бы к чтению каждого байта каждого файла так или иначе.
РЕДАКТИРОВАНИЕ - слишком долго, чтобы быть комментарием, в ответ на:
файлы более чем 10 ГБ не проверяют
Можно хотеть попробовать эту различную опцию: - большие файлы скорости
Возможно, что разность, которую Вы используете, не справляется хорошо с очень большими файлами (больше, чем системная память, например), и таким образом сообщает о различиях между файлами, которые являются на самом деле тем же.
Я думал, что была-h опция или 'bdiff', который добился большего успеха на больших файлах, но я не могу найти один в Fedora. Я полагаю, что - опции больших файлов скорости являются преемником '-h', "нерешительного, сравнивают" опцию.
Другой подход должен был бы повторить, что rsync управляют, чтобы Вы использовали с '-vin' (подробный, перечислите, no_run). Это сообщило бы о любых различиях, которые rsync находит - и не должно быть никого.
Для перемещения некоторых файлов Вы смотрите на сценарий что-то как:
if [ cmp -s "$dir1/$path" "$dir2/$path" ] ; then
target="$dir2/verified/$path"
mkdir -p $(basename "$target")
mv "$dir2/$path" "$target"
fi
но я не рекомендую делать это. Базовый вопрос, "как я могу быть уверен, что rsync скопировал файловую иерархию правильно?" и если можно продемонстрировать себе, что rsync работает хорошо с разностью или некоторым другим инструментом, затем можно просто полагаться на rsync, вместо того, чтобы работать вокруг этого.
rsync - vin выдержит сравнение на основе того, что другие опции Вы даете ему. Я думал, что это приняло значение по умолчанию к контрольной сумме, но Вы правы,-c или - контрольная сумма требуется для этого.
Различная утилита действительно предназначается для файлов строк текста, но это должно сообщить 'идентичный' под-s для двоичных файлов.
- резюме должно подавить любой вывод содержания файла - мои извинения за пропуск его ранее - это было полупроложено под землей в ужасном сценарии.
Я посмотрел бы на использование своего рода приложения хеша для проверки целостности данных. Я знаю, что много утилит открытия дубликата файла используют хеши для идентификации duplicate/non-duplicates. Кажется мне, что это - расследование, которое могло бы стоить.
Можно использовать rdiff-резервное-копирование для этого. Установите его на обоих серверах, и это будет делать умные сравнения контрольных сумм и синхронизировать то, что еще не там.
Вот diff
с отчетом о прогрессе на основе количества файлов:
diff -rqs dir1 dir2 | pv -l -s filecount > logfile
Вам понадобится pv (pipe viewer): http://www.ivarch.com/programs/pv.shtml
Объяснение:
diff -r
рекурсивно сравнивает каталог и подкаталоги. diff -q
печатать только имена файлов, которые отличаются. не печатать фактические различия. diff -s
печатать также имена файлов, которые не отличаются. это важно для информации о ходе выполнения. pv -l
сообщать о ходе работы на основе количества строк. pv -s count
оценить время до завершения на основе количества строк. logfile
предназначено для красивого вывода. Иначе вывод из diff
будет смешиваться со строкой состояния из pv
. для получения количества файлов используйте следующую команду:
find dir1 -type f | wc -l
Фильтруйте лог-файл для файлов, которые отличаются:
grep -v "^Files .* identical$" logfile
Эта вариация будет выводить файлы, которые отличаются в реальном времени, одновременно записывая все в logfile
:
diff -rqs dir1 dir2 | pv -l -s filecount |
tee logfile | grep -v "^Files .* identical$"
В качестве альтернативы вы можете записывать только файлы, которые отличаются:
diff -rqs dir1 dir2 | pv -l -s filecount |
grep -v "^Files .* identical$" > logfile
Примечание: вышеуказанные команды будут сообщать о прогрессе на основе количества файлов. Это работает лучше всего, если есть много маленьких файлов. Если у вас есть несколько огромных файлов, это не принесет вам большого удовольствия.
К сожалению, я не знаю простого способа сообщать о прогрессе, основанном на сравнении байтов.
Если вы можете найти покой, просто сравнивая метаданные (а не фактическое содержимое файлов), то вы можете использовать rsync. Это будет значительно быстрее.
Подробнее:
mv
каждый файл это находит к "проверенной" папке в корне диска, сохраняя полный путь? Например, если/disk1/a/b/c/file1
идентично/disk2/a/b/c/file1
, затем переместите его в/disk1/verified/a/b/c/file1
. Затем я мог закончить только с плохо скопированными файлами. (До сих пор много файлов, которые не проверяют более чем 10 ГБ, который страшен.) – Dan 28.01.2014, 08:03rsync -vin
- это делает сравнение контрольной суммы или байт байтом? Я думал, что rsync только сравнил размер/дату, если Вы не добавляете-c
. И от того, что я считалspeed large files
кажется, только имеет значение с недвоичными файлами... или я неправильно? – Dan 28.01.2014, 09:12diff
дает мне результаты в форме"Files __ and ___ differ"
... и я прокручиваю этоsed -e "s/Files /cp -afv /" -e "s/ and / /" -e "s/ differ$//"
попытаться генерировать сценарий для перекопирования плохих файлов. Но вывод разности закрывается кавычки, таким образом, он не работает. Я могу заставить это давать мне заключенные в кавычки пути? – Dan 28.01.2014, 19:51