Как я могу предотвратить случайное удаление папки самостоятельно?

41

У меня на рабочем столе очень важная папка. Я иногда очищаю свой рабочий стол и очень обеспокоен тем, что могу случайно удалить упомянутую папку. Есть ли способ предотвратить такую ​​катастрофу, не ограничивая мои частые операции чтения-записи содержимого папки? Заметьте, я не против удаления содержимого внутри папки один за другим, но сама папка имеет значение для меня. Если он будет удален, я потеряю много усилий.

codezombie
источник
69
Рабочий стол - худшее место для хранения критически важных данных, хранения их в другом месте и создания ярлыков для них на рабочем столе.
Моав
2
Это обычная практика, ярлык просто приводит к папке, все будет работать.
Моав
3
@JasonStack возможно, но не обязательно. Если вы переместите папку, и у вас есть другая программа или документ, предполагающий, что папка находится на вашем рабочем столе, это может что-то сломать. Это может произойти, например, если у вас есть файлы, которые ссылаются на другие файлы. Если это не относится к вашему контенту, то у вас, вероятно, не будет проблем.
барбекю
8
Не делай этого. <hr /> делать резервные копии. Всегда делайте резервные копии . На внешних носителях. Всегда делайте резервные копии на внешнем носителе. Кроме того, вы должны проверить функцию «История файлов / Предыдущие версии» Windows. Это очень удобно.
forloop
1
«Если я сейчас перенесу эту папку куда-нибудь и создам ярлык с тем же именем на рабочем столе, все ли будет зависеть от того, будет ли работать все в зависимости от папки?» @JasonStack Я ответил на это в своем обновленном ответе ниже. Я хотел бы отметить, что Соединения были введены по явной причине, чтобы иметь возможность перемещать вещи на другой физический том, не затрагивая ничего.
JDługosz

Ответы:

112

Не пытайтесь избежать неизбежного. Используйте резервные копии и контроль версий.

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

CodeCaster
источник
26
Хороший крик о резервных копиях + советы по контролю версий.
Бертиб
6
@bertieb это важно. ОП не нужно случайно удалять папки, чтобы потерять свою работу, диск может умереть завтра.
CodeCaster,
11
Согласовано. Запуск без резервного копирования - это просто потеря данных в какой-то момент в будущем - когда, а не если. Теперь, если вы извините меня,
поспешил
7
Как ИТ-специалист, пожалуйста, используйте резервные копии и контроль версий для всех важных файлов, особенно для клиентов или вашего бизнеса. Пожалуйста пожалуйста пожалуйста.
CorsiKa,
8
Вы спрашиваете, какова вероятность этого? ДОВОЛЬНО ЧЕРТ ХОРОШО, я сам случайно удалил в конце прошлого года папку, полную важных вещей, которые я не смог вернуть. Основной вызов для пробуждения, теперь я горячо резервирую свою работу в GitHub, зеркалируемую в BitBucket, а также отражаемую на переносном жестком диске. Возьмите его от выжившего, дети, не позволяйте ему случиться с вами. СЛУШАЙТЕ ЭТИХ ПАРНЕЙ, ОБРАТИТЕ СВОЮ ПЕРСОНАЛ. ШУТКИ В СТОРОНУ.
51

Существует лучшее решение вашей проблемы: переместите папку в более подходящее место (например,% USERPROFILE% \ Documents)

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

Если другие приложения зависят от того, находится ли эта папка на рабочем столе, вы можете создать символическую ссылку с помощью команды «mklink». Поскольку символьные ссылки обрабатываются на уровне файловой системы (хотя ярлыки являются реальными файлами, которые просто указывают на другое местоположение), не должно быть проблем совместимости с программами, которые пытаются использовать этот тип «ярлыков» в путях.

Майкл Беккер
источник
2
Учитывая обстоятельства, это правильный ответ.
Ангстрем
Мне нравится эта идея. но я не понимаю, будет ли это работать на Cygwin, который я установил в упомянутой папке на рабочем столе. Не вызовет ли это проблем с моей установкой и функционалом Cygwin?
Codezombie
@JasonStack, установка Cygwin вполне может иметь проблемы, если вы переместите ее в другое место.
барбекю
1
@JasonStack, вы можете отредактировать свой вопрос, включив в него сведения о Cygwin, поскольку это влияет на возможные ответы.
барбекю
1
@JasonStack Cygwin должен незаметно обрабатывать переходы, как точки монтирования Unix. Программы Unix знают о символических ссылках, и более новые версии библиотек Cygwin должны обрабатывать символические ссылки (в стиле Vista) как таковые, поэтому программа должна «видеть» их как нечто особенное или нет.
JDługosz
7

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

Вот метод, который обычно надежен:

  1. Создать нового пользователя
  2. Назначьте владельца папки, которую вы не хотите удалять этому новому пользователю.
  3. Удалите доступ вашего пользователя, чтобы удалить папку, убедитесь, что у пользователя есть полные права на чтение / запись в папке.

Я использовал этот трюк в Windows NT для Windows 7. Иногда вам нужно немного поэкспериментировать с настройками, прежде чем вы достигнете совершенства.

ПРОВЕРЬТЕ ЭТО НА ПЕРВОМ НОВОМ ПАПКАХ (включая создание файлов и папок в тестовой папке!

Также : прислушайтесь к совету «Используйте резервные копии и контроль версий». Если файлы так важны, вам нужно как минимум 2 копии.

Билл
источник
Windows Home Basic может настроить владельца; они просто не включали апплет для этого. Сторонний инструмент разрешений все еще работает. Также в так называемом PIDL «Режима Бога» может быть указан этот список; Я не помню. Это зависит от того, удерживали ли они оснастку тоже.
JDługosz
5

Файловые системы Windows имеют флаг «только для чтения». Это проще, чем устанавливать разрешения DACL для такого простого эффекта.

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


Кроме того, если вы воссоздаете каталог с тем же именем, вы можете применить к нему «восстановление предыдущих версий».


Обновить

Я экспериментировал на системе Win7. GUI удаления (без корзины) игнорирует на Rфлаг на каталог. Никаких дополнительных подсказок, предупреждающих об этом, также нет, как я видел для Hи / или Sфлагов. Выдача rdиз командной строки дает отказано в доступе, как и ожидалось. Тем не менее, вы не можете просто rdсоздать непустую директорию: удалить файл и удалить директорию - это разные команды. Команда для рекурсивного удаления каталога с содержимым удалит содержимое, а затем не удалит пустой каталог.

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

Наилучшим решением кажется символическая ссылка . Создание символической ссылки (новый стиль, которую Windows Vista и выше называют символической ссылкой) на каталог на рабочем столе, когда каталог фактически существует где-то еще, работает в том смысле, что если я удалю значок на рабочем столе (shift-delete, нет корзины) фактический каталог не изменяется, так как была удалена только ссылка.

Shift-Delete иконки на рабочем столе не заботило, была ли она помечена Rатрибутом.

Программа, использующая стандартное диалоговое окно открытия файлов Windows, без проблем прошла по символической ссылке. Он фактически разрешил имя связанного каталога, поэтому открытый файл был настоящим именем; например Desktop\MyFolderстал, D:\scratch\MyFolderкак я прошел через это.

Используя ссылку в старом стиле ( Junction ), программа увидела имя с соединением, которое все еще находится в пути; например, C:\Users\john\Desktop\MyFolder\test.txtтот факт, что это ссылка невидима. Тем не менее, действие удаления GUI все еще рассматривает его как ссылку, а не незаметно следит за ней.

В любом случае, если программа делает использование псевдонима имени непосредственно он будет работать. Но наличие файлов, иногда видимых с одним именем, а иногда с другим, может запутать вещи.

Вывод

Используйте Junction на рабочем столе с папкой, действительно расположенной в другом месте, и будет совершенно ясно, что это то, что происходит. При желании можно использовать DACL для предотвращения случайного удаления файла точки соединения на рабочем столе. По крайней мере, есть сценарий для его повторного создания при необходимости.

бонус

Я не пробовал это, но мне интересно, не могли бы вы добавить что-нибудь в "новые элементы", чтобы воссоздать соединение или символическую ссылку? Затем просто щелкните правой кнопкой мыши на пустом рабочем столе, выберите New ... и выберите «Desktop Junk» из меню. Пусть он восстановит все, что вы действительно хотели на рабочем столе.

JDługosz
источник
Я никогда не слышал о Desktop Junk или Junction в Windows. То, что я знал, было ярлыком . Это то, что вы подразумеваете под перекрестком? Кстати, я недавно узнал из ответов и комментариев о mklink и переместил нужную мне папку ( Temp ) в папку Documents, затем запустил mklink mylink %userprofile%\Documents\Tempее. Это сработало, и у меня, похоже, нет проблем с программами, работающими с каталогом.
Codezombie
Desktop Junk - это имя, которое я придумал для своего сценария. Или скорее для пункта меню, который он добавляет, чтобы вызвать сценарий. Это игра слов на Desktop Junction и Junk Drawer. Ярлык это другое дело. Ярлыки известны только оболочке GUI и запутывают все остальное. Поэтому он, вероятно, работает как символические ссылки при использовании диалога открытия файла, но вы не сможете использовать его в качестве фактического имени каталога: «C: \ Users \ john \ Desktop \ Shortcutname \ foo.txt» не будет работать.
JDługosz
1
@JasonStack см superuser.com/questions/253935/...
JDługosz
2

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

http://blogs.msdn.com/b/b8/archive/2012/07/10/protecting-user-files-with-file-history.aspx

барбекю
источник
Я не могу говорить с Win 8.1 и с тем, как работает File History, но в Win 7 щелчок правой кнопкой мыши по папке открывает «Предыдущие версии», чтобы восстановить файлы с предыдущей «точки восстановления». Великолепно в теории, но если вы заполняете диск, Windows отбрасывает предыдущую точку восстановления и ... poof - предыдущей версии больше нет. Не полагайтесь на ОС больше, чем на себя.
Ян Вт
Функция предыдущих версий была удалена в Win 8.1, функция истории файлов - ее замена.
барбекю
Я понимаю, что изменение функции, однако, вопрос о том, когда на диске заканчивается место для создания новых записей истории файлов, что происходит, остается. Хотите проверить это? Руководство - не доверяйте ОС больше, чем самим себе.
Ян Вт
@Ian W, не уверен, насколько это актуально. История файлов создает свои резервные копии на отдельном томе хранилища. Полное заполнение жесткого диска не может перезаписать резервные копии, потому что они находятся на отдельном томе.
барбекю
1

Эффективным решением может быть перемещение папки с рабочего стола, а затем установка соединения NTFS с помощью MKLINKкоманды.

C: \ Users \ Administrator> MKLINK

Создает символическую ссылку.

MKLINK [[/ D] | [/ H] | [/ J]] Ссылка Target
        / D Создает каталог символическую ссылку. По умолчанию это файл
                символическая ссылка.
        / H Создает жесткую ссылку вместо символической ссылки.
        / J Создает перекрестный каталог.
        Ссылка указывает новое символическое имя ссылки.
        Цель указывает путь (относительный или абсолютный) новой ссылки
                относится к.

Так что в вашем случае команда будет:

MKLINK /J %userprofile%\Desktop\ImportantFolder D:\ImportantFolder

Где D:\ImportantFolderфактическая папка и %userprofile%\Desktop\ImportantFolderместо соединения.

Заметки:

  • Junction не должен иметь одно и то же имя исходной папки.
  • Соединение не является копией, фактически перенаправление является еще одним способом доступа к вашей папке. Представьте это как краткую версию обычного (* .lnk) ярлыка.
  • Переходы от обычных ярлыков к папкам отличаются тем, что они полностью прозрачны для программ.
  • Если соединение удалено, фактическая папка не удаляется.
  • Но любая модификация файла - это то же самое, что идти D:\ImportantFolderи делать вещи. Таким образом, если вы удалите passwords.txtфайл на перекрестке, вы также удалили его d:/ImportantFolder.
  • Если вы случайно удалили перекресток, вы создадите его снова.

Графический (более эффективный, простой ) способ (с расширением контекстного меню)

Вместо этого вы можете установить Link Shell Extension, а затем переместить папку в другое место, щелкнуть ее правой кнопкой мыши и выбрать, Pick link source...затем щелкнуть правой кнопкой мыши на рабочем столе и выбрать drop as...-> Junction. И вы сделали.

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

beppe9000
источник
0

Вы можете сделать резервную копию всех ваших файлов и папок в onedrive. Вы можете использовать его бесплатно, но ограничено в 15 ГБ. Тем не менее, если у вас есть подписка на офис 365, у вас есть 1TB storge в onedrive, и он включен.

zeleena
источник
Спасибо за предложение, но в настоящее время я не могу использовать облачное резервное копирование из-за интенсивных операций чтения / записи в этой папке и, следовательно, ограничений использования полосы пропускания.
Codezombie