Написание утилиты резервного копирования файлов на C # - PullRequest
0 голосов
/ 21 сентября 2009

- НАЧАЛО RANT -

ВСЕ, что я хочу сделать, - это скопировать папку «Documents and Settings» для ее резервного копирования в Windows Server 2003, чтобы мы могли легко, если нужно, легко извлечь из нее старые файлы после очистки сервера для обновления ОС до Windows Server 2008 НО, я получаю ошибки об использовании NTUSER и т. Д. При попытке скопировать его. ОЧЕНЬ раздражает, что администратор не может просто использовать проводник Windows для копирования папок, но что угодно.

У меня нет времени прыгать через обручи безопасности, стирая разрешения. У меня нет времени, чтобы инициировать ОГРОМНУЮ копию папки только для того, чтобы она потерпела неудачу в некотором случайном% во время операции, когда она сталкивается с дескриптором открытого файла. У меня нет времени повторять этот процесс снова и снова, выискивая дескриптор открытого файла и каждый раз закрывая его с помощью проводника процессов, дестабилизируя систему как побочный эффект.

- END RANT -

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

  • Как передать эту роль «резервного копирования» (SE_BACKUP_NAME / SE_RESTORE_NAME) процессу, например программе C #?

  • Может ли это быть сделано в управляемом коде (или мне придется выкапывать документы Win32 API, или манифесты от руки и встраивать их, кто знает, где, или отследить какую-то непонятную регистрацию программы резервного копирования) командная строка-утилита)

  • Как открыть файл в C # с семантикой резервного копирования, чтобы я мог скопировать файл?

  • Будет ли открывать дескрипторы файла (с исключительными блокировками чтения) мешать чтению файла для целей резервного копирования или будет открывать его с семантикой резервного копирования, и временно приостанавливать запись в файл, пока он открыт для резервного копирования

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

Достаточно скоро я буду обновлять некоторые серверы до ночных кошмаров, то есть Windows Server 2008, и изучать командную утилиту icacls, благодаря удалению Microsoft поддержки графического интерфейса для редактирования безопасности для нескольких папок / файлов (умный ход. Нет.)

1 Ответ

0 голосов
/ 04 июня 2015

Я использовал Microsoft Synchronization Framework , чтобы создать свое собственное приложение резервного копирования и восстановления для переноса профилей пользователей и других связанных файлов. Sync Framework, по крайней мере, имеет опцию автоматического сбоя и продолжения без запроса, когда файл используется, что я и хотел.

Поскольку это структура синхронизации, у нее есть некоторые возможности, связанные с управлением конфликтами. Они мне не нужны, но у него есть и другие «провайдеры» для синхронизации баз данных и веб-сайтов, в дополнение к синхронизации файлов.

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

Sync Framework требует установки MSI, но я сделал это и с PSExec.

...