У меня есть очень важная папка на рабочем столе. Я иногда очищаю свой рабочий стол и очень обеспокоен тем, что могу случайно удалить упомянутую папку. Есть ли способ предотвратить такую катастрофу, не ограничивая мои частые операции чтения-записи содержимого папки? Примечание. Я не против удаления содержимого папки по одному, но сама папка имеет для меня значение. Если он будет удален, я потеряю много усилий.
7 ответов
Не пытайтесь избежать неизбежного. Используйте резервные копии и контроль версий.
Вы можете отказать себе в удалении, хотя. Удаление файлов и папок в этом каталоге - это отдельное разрешение, которое вы также можете отключить при необходимости.
Существует лучшее решение вашей проблемы: переместите папку в более подходящее место (например,% USERPROFILE%\Documents)
Если вам нужен доступ к папке с рабочего стола, вы всегда можете создать ярлык. Это гарантирует, что, хотя вы можете случайно удалить ярлык, вы фактически никогда не удалите папку или ее ценное содержимое.
Если другие приложения зависят от того, находится ли эта папка на рабочем столе, вы можете создать символическую ссылку с помощью команды "mklink". Поскольку символьные ссылки обрабатываются на уровне файловой системы (хотя ярлыки являются реальными файлами, которые просто указывают на другое местоположение), не должно быть проблем совместимости с программами, которые пытаются использовать этот тип "ярлыков" в путях.
Да, возможно, ограничено тем, какая версия Windows у вас установлена (домашние версии могут не иметь возможности изменять владельца). Кроме того, помните, что удаление ваших разрешений на удаление не является гарантией того, что вы не можете удалить папку. Я был сожжен несколько раз.
Вот метод, который обычно надежен:
- Создать нового пользователя
- Назначьте владельца папки, которую вы не хотите удалять этому новому пользователю.
- Удалите права доступа пользователя, чтобы удалить папку, убедитесь, что у пользователя есть полные права на чтение / запись в папке.
Я использовал этот трюк на Windows NT для Windows 7. Иногда вам нужно немного поэкспериментировать с настройками, прежде чем вы получите идеальный результат.
ПРОВЕРЬТЕ ЭТО НА ПЕРВОЙ НОВОЙ ПАПКЕ (включая создание файлов и папок в тестовой папке!
Также: прислушайтесь к совету "Используйте резервные копии и контроль версий". Если файлы так важны, вам нужно как минимум 2 копии.
Файловые системы 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" из меню. Пусть он восстановит все, что вы действительно хотели на рабочем столе.
Еще одна вещь, которую вы могли бы рассмотреть, - включить функцию истории файлов в Windows 8.1. Это позволит вашей системе автоматически вести историю изменений ваших файлов и папок. Лучше всего использовать с внешним хранилищем, но можно использовать и с локальным диском.
http://blogs.msdn.com/b/b8/archive/2012/07/10/protecting-user-files-with-file-history.aspx
Эффективным решением может быть перемещение папки с рабочего стола, а затем установка соединения NTFS с помощью команды MKLINK
.
C:\Users\Administrator>MKLINK Creates a symbolic link. MKLINK [[/D] | [/H] | [/J]] Link Target /D Creates a directory symbolic link. Default is a file symbolic link. /H Creates a hard link instead of a symbolic link. /J Creates a Directory Junction. Link specifies the new symbolic link name. Target specifies the path (relative or absolute) that the new link refers to.
Так что в вашем случае команда будет:
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
. И вы сделали.
Это первое приложение, которое я устанавливаю на новые системы, так как это чрезвычайно полезное решение. Я настоятельно рекомендую это, если вам когда-нибудь придется управлять переходами или жесткими / символическими ссылками на вашем компьютере.
Вы можете сделать резервную копию всех ваших файлов и папок в onedrive. Вы можете использовать его бесплатно, но ограничено в 15 ГБ. Тем не менее, если у вас есть подписка на офис 365, у вас есть 1TB storge в onedrive, и он включен.