У меня был огромный каталог всевозможных вещей, от семейных фотографий до репозиториев git и программ с тысячами видимых и скрытых файлов, которые были синхронизированы на ~ 10 компьютерах. Я был вынужден перейти из Dropbox в Nextcloud, чтобы синхронизировать этот огромный каталог со всеми этими компьютерами.
Я обнаружил, что Nextcloud удалил огромное количество файлов, начиная от скрытых файлов и заканчивая .tex
файлами. Я продолжаю пытаться понять, почему это произошло, и спросил на соответствующем форуме Nextcloud, и мне повезло иметь резервную копию каталога Dropbox .
SO ...
Учитывая, что у меня есть эти две огромные, сложные директории с миллионами файлов в них, как я могу сравнить их визуально, как человек, чтобы попытаться понять ущерб, нанесенный Nextcloud? Как я могу понять, что Nextcloud стирает?
В основном мне нужно что-то большое, ясное и наглядное, как gdmap
, смешанное с tkdirdiff
.
Я прошу руководство и предложения.
С миллионами файлов я бы создал контрольную сумму для каждого файла NextCloud.
Затем я бы добавил каждую контрольную сумму в базу данных SQLite .
Затем я написал бы скрипт, который сканировал каждый файл в каталоге клиента. Этот скрипт будет запускаться на каждом из 10 компьютеров с изображениями / видео:
Я бы НЕ сравнивал файлы по дате и времени, так как они могли измениться при заполнении Nextcloud.
С миллионами файлов вы действительно не хотите визуально проверять различия. Сочетание программы подойдет для меньшего числа файлов, но вы должны продумывать все, что касается отчетов от sort и uniq. Подготовьте списки из общей начальной точки каталога, чтобы пути были идентичными (команда find найдет такой список завершенных путей), отсортируйте два списка вместе и используйте uniq для создания отчетов по недублированным строкам. (Убедитесь, что все uniq файлы из одного списка, а не между двумя). Решите, как вы хотите скопировать отсутствующие файлы в другое место.
У меня просто было то же, происходят со мной при перемещении от локального устройства хранения данных до NAS: была разница в размерах, и я сделал следующее:
stat -c "%s %n" /media/Data/ > /tmp/DSK
stat -c "%s %n" /media/NAS/ > /tmp/NAS
который перечисляет размер (%s
) и имя (%n
) из всех файлов соответственно и затем загруженный DSK
и NAS
в моем любимом редакторе и визуально сравненный оба файла.
В моем случае только один файл отличался, и он копирует, поскольку я пишу это, но в Вашем случае Вы могли бы хотеть удалить имена каталогов файлов:
sed 's/\/media\/Data//g' /tmp/DSK > /tmp/DSK_Files
sed 's/\/media\/NAS//g' /tmp/NAS > /tmp/NAS_Files
и позвольте оболочке выяснить различия:
diff --context=0 /tmp/DSK_Files /tmp/NAS_Files