Как в 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

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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Что делать, если при загрузке рабочего стола открываются INI-файлы

Системный сбой может привести и порой приводит к очень странным ошибкам, которые, хотя и не ...

Что делать, если файл thumbs.db не дает удалить сетевую папку

Удаление общих сетевых папок почти ничем не отличается от удаления обычных каталогов, за тем лишь ...

Как найти и удалить осиротевшие файлы в облачном хранилище Google Drive

Каждый создавший учетную запись Google пользователь автоматически получает 15 Гб бесплатного облачного дискового пространства. Это ...

Что делать, если при удалении папки Windows выдает сообщение «Элемент не найден»

Выполнив удаление файла или папки, неожиданно для себя вы можете обнаружить, что удаленный объект по-прежнему ...

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

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