Я делаю резервную копию на моем Samsung rv420 под управлением Windows 7 Home Starter Edition.

Для этого я хочу убедиться, что при копировании с моего компьютера на внешнее устройство копируемые файлы не меняются ни в малейшей степени. Для этого я сделаю следующее: я возьму файл со своего компьютера, скопирую его на внешнее устройство, а затем снова скопирую его с внешнего устройства на компьютер. Итак, файл «путешествовал» по устройству, и я хочу знать, изменился он или нет.

Я знаю немного о хэш-функциях. У меня есть программа под названием FileMenu Tools, которая включает в себя функцию для вычисления нескольких различных алгоритмов хеширования. Я надеюсь, что программа работает правильно.

Я сделал то, что я описал с файлом, я, по логике, закончил двумя файлами, оригиналом и копией, которую я оставил на рабочем столе. Я вычислил хеш-функцию, и она не была той же.

Я не знаю, почему это так. Хеш зависит от того, в каком каталоге находится файл?

Что вы можете порекомендовать мне для достижения того, чего я хочу, то есть проверять файл точно так же после путешествия по внешнему устройству?

1 ответ1

0

Нативное решение для Windows (без загрузки сторонних разработчиков) заключается в использовании некоторых команд powershell.

Откройте powershell.exe (как пользователь или администратор). Затем используйте следующую команду.

Compare-Object "$(Get-Content $PATH1)" "$(Get-Content $PATH2)"

Вы можете установить $PATH1 и $PATH2 в пути к своим файлам и скопировать и вставить команду выше.

Если ничего не возвращается, файлы идентичны по содержанию, что, как я полагаю, вам нужно. Обратите внимание, что эта команда не проверяет идентичные разрешения, идентичную дату изменения и т.д. Чтобы сравнить идентичные дату и режим изменения, используйте следующую команду.

Compare-Object "$(Get-ItemProperty $PATH1 | Select-Object Mode, LastWriteTime)" "$(Get-ItemProperty $PATH2 | Select-Object Mode, LastWriteTime)"

Чтобы сравнить разрешение, используйте следующую команду.

Compare-Object "$(Get-Acl $PATH1).Access" "$(Get-Acl $PATH2).Access"

Опять же, вы можете установить $PATH1 и $PATH2 и просто скопировать и вставить команды выше.

Во всех трех командах, если он что-то возвращает, вы знаете, что они не совпадают. С другой стороны, если он ничего не возвращает, вы знаете, что они одинаковы по содержанию (1-я команда), времени и режиму последней записи (2-я команда) и разрешениям (3-я команда).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .