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

Можно ли написать какой-нибудь скрипт, который бы находил ссылки, находил файл, удалял ссылку и копировал файл обратно в папку и переименовывал его в соответствии с именем ссылки? Или, может быть, часть программного обеспечения, которая делает это?

Спасибо за любую помощь.

2 ответа2

0

Эта проблема не из-за политики домена. Это из-за обновления Windows, которое сломало символические ссылки. эта тема помогла мне понять актуальную проблему. После удаления обновления и использования командной строки выполните следующую команду:

Fsutil Поведение установлено SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1

Мне удалось скопировать верхнюю папку на локальный USB-накопитель и восстановить исходные файлы в виде файлов с исходным именем и отменить большую часть "ущерба", который я нанес.

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

0

Это тип ситуации, когда хорошо спланированная и поддерживаемая стратегия резервного копирования действительно окупается. Если это так в вашей компании, используйте его.

То, что вы сделали, это плохой способ сэкономить место. Рассмотрим следующий вариант использования:

  1. Пользователь копирует файлы с общего ресурса Deptx, готовясь к работе над ними
  2. Вы бросаете ее копии и создаете символические ссылки на происхождение.
  3. Она изменяет оригиналы, которые все еще требовались другими для их работы
  4. ...

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

Записка на будущее. Как администратор хранилища, вы должны сообщить бизнесу, когда пришло время расширять хранилище, которое обычно составляет около половины. Когда он заполнен на 70%, вы можете начинать тянуть пожарную сигнализацию ежедневно, пока они не назначат бюджет. Если этого не произойдет, пришло время сообщить им на очень откровенной встрече, что они рискуют бизнесом. Данные - это ядро современного бизнеса.


Вы можете идентифицировать все символические ссылки с помощью:

C:\Users\user>dir /AL /S C:\ | find "SYMLINK"
07/14/2009  01:08 AM    <SYMLINKD>     All Users [C:\ProgramData]

# Only one result in on my Windows 7 host, and it's a system default.
# There are likely more in Windows Server OSs.
# Cmd Explained:
# /AL   A Lists file with attribute:L (Symlinks and dir junctions)
# /S    Do recursively
# C:\   Drive to scan

«Все пользователи» - это символическая ссылка «C:\Users\All Users», предназначенная для «C:\ProgramData». Обратите внимание, что выходные данные вышеупомянутой команды не дают полный путь к символической ссылке, которая вам нужна.

<<< STOP >>> Если количество символических ссылок меньше тысячи, возможно, стоит подумать о том, чтобы вручную заменить их целевыми файлами.

Вы можете использовать NTFSLinksView. Похоже, что он может экспортировать данные, которые включают полные пути назначения и символьные ссылки. http://www.nirsoft.net/utils/ntfs_links_view.html

Получив эти значения, вы можете просмотреть их с помощью небольшого количества Powershell. Измените разделение на то, что выводит программа. Пример устанавливает пробелы в качестве разделителя. Если он использует запятые, используйте: ','. Убедитесь, что у cvs есть только данные Link и Target. В этой последовательности.

Примечание: это не сохраняет символические ссылки по умолчанию ...

Import-CVS -Delim ' ' -Path input.cvs -Header Link,Target | ForEach-Object {
cmd /c rmdir $Link
Copy-Item $Target $Link
}

ВНИМАНИЕ: Это не проверено и может нанести еще больший урон ... Используйте на свой страх и риск. Если никаких предыдущих резервных копий не существует, и вы пришли к такому результату, сделайте резервную копию, прежде чем идти дальше.

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