Как в Windows 10 заменить дубликаты файлов жесткими ссылками с помощью PowerShell

Любители скачивать из интернета всё подряд во время плановой оптимизации системы нередко обнаруживают у себя на диске множество дубликатов файлов, если программа-оптимизатор умеет находить одинаковые файлы не только по названиям, но и по контрольным суммам. Например, всем известный чистильщик CCleaner явно испытывает с этим проблемы, выполняя поиск дубликатов только по названию и содержимому.

Хорошо, не подходит CCleaner, всегда можно найти более специализированную программу, но давайте представим другую ситуацию: вам нужно освободить на жестком диске место, но так, чтобы сами записи о дубликатах остались.

Сделать это можно, не прибегая к помощи сторонних программ, воспользовавшись встроенными средствами операционной системы, а именно PowerShell, заменив дублирующийся файлы жесткими ссылками. Если кто не в курсе, жесткая ссылка — это нечто вроде специального ярлыка, описывающий элемент файла, на который указывает эта ссылка. Кроме названия (имена Hard Link могут отличаться от файлов), внешне такая ссылка практически ничем не отличается от файла, удаление последней жесткой ссылки на файл приводит к удалению самого файла.

Для решения поставленной задачи мы предлагаем использовать готовый скрипт, написанный неким Василием Гусевым и впоследствии доработанный Вадимом Стеркиным на пару с самим автором.

Скачать его вы можете по ссылке - disk.yandex.ua/d/5Vi672Tkpfk0FA.

Откройте PowerShell, перейдите с помощью команды cd в расположение скрипта и запустите его следующей командой, передав ему в качестве аргументов пути к анализируемым папкам:

.\replacing-duplicates-hard-links.ps1 -dir1 D:\data1 -dir2 D:\data2

Если при выполнении скрипта вы получите ошибку, а так скорее всего и будет, разрешите исполнение скриптов PowerShell командой Set-ExecutionPolicy RemoteSigned -Scope Currentuser с подтверждением и повторите запуск скрипта.

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

Replacing-duplicates-hard-links

Если дубликат файла отсутствует, в консоли выводится уведомление «файл не найден». Проверить, что файл в папке действительно «превратился» в жесткую ссылку можно командой fsutil hardlink list настоящий файл, — путь к жесткой ссылке будет указан во второй строке.

Fsutil hardlink list

Примечание: в Windows 8.1 запуск скрипта приведет к удалению дубликатов в папке data1, так как командлет New-Item не поддерживается PowerShell версии 4.0

Тем, у кого-то возникнут проблемы со скриптом, можно порекомендовать Dupemerge — стороннюю консольную утилиту, служащую тем же целям, что и скрипт, но более функциональную и информативную.

Простейшая команда поиска дубликатов и замены их жесткими ссылками в PowerShell выглядит следующим образом:

./dupemerge D:/data1 D:/data2, при этом тулза выводит отчет о проделанной работе.

Dupemerge

Dupemerge: https://schinagl.priv.at/nt/dupemerge/dupemerge.html

Включение логирования загрузки драйверов в Windows и анализ файла лога ntbtlog

Если вы столкнулись с проблемами при загрузке Windows, первое, что нужно сделать, это попробовать загрузить Читать далее

Что это за файл NTUSER.DAT в корне папки профиля пользователя и что будет, если его удалить

Когда вы создаете в Windows новую учетную запись, в папке Users для нее создается отдельный Читать далее

Как редактировать файл HOSTS в Linux Ubuntu

В операционной системе Windows, в расположении %windir%\System32\drivers\etc находится небольшой файл, который служит своего рода шлюзом Читать далее

2Browse — минималистичный гибрид браузера и Проводника

Идея совмещения функционала разных программных продуктов в одном приложении далеко не нова, по этому принципу Читать далее

Оцените Статью:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *