Резервное копирование / копирование файлов, которые «используются» или «заблокированы» в Windows (командная строка)
Если вы когда-либо пытались скопировать файл, заблокированный другим приложением, вы, вероятно, видели сообщение об ошибке, похожее на «Процесс не может получить доступ к файлу, потому что другой процесс заблокировал часть файла». Так как же вы все это копируете??
Начиная с XP, Windows поддерживает технологию Volume Shadow Copy, которая используется для включения функций предыдущих версий в Vista, а также для восстановления системы и резервного копирования. Для этого необходимо сделать временный снимок файла или диска, а затем разрешить приложению читать снимок, даже когда другие приложения обращаются к файлу или изменяют его..
Что мы можем сделать, это использовать утилиту командной строки под названием HoboCopy, которая использует этот сервис для копирования файла.
Понимание предпосылок
HoboCopy и большинство других утилит резервного копирования используют две службы в Windows, и вам необходимо убедиться, что эти службы не отключены:
- Volume Shadow Copy
- Microsoft Software Shadow Copy Provider
Их можно оставить как ручной запуск, поэтому им не нужно постоянно работать. При необходимости Hobocopy автоматически запустит две службы, а служба Volume Shadow Copy будет отключена после завершения..
Использование HoboCopy для резервного копирования / копирования одного файла
Синтаксис немного странный, потому что HoboCopy действительно предназначен для резервного копирования всего набора папок. Мы можем использовать его для резервного копирования одного файла, передав аргумент имени файла в конце.
Примечание: в Windows Vista вам нужно будет запустить командную строку режима администратора, щелкнув правой кнопкой мыши на командной строке в меню «Пуск» и выбрав «Запуск от имени администратора»..
Синтаксис:
hobocopy c: \ directoryname \ d: \ backupdirectory \
Например, я хочу сделать резервную копию моего файла c: \ users \ geek \ mail \ outlook.pst в d: \ backups \ outlook.pst. Вот синтаксис, который я бы использовал:
C: \> hobocopy c: \ users \ geek \ mail \ d: \ backups \ Outlook.pst
HoboCopy (c) 2006 Корпорация Вангдера. [email protected]
Запуск полной копии с c: \ users \ geek \ mail to d: \ backups \
Скопированный каталог
Резервное копирование успешно завершено.
Резервное копирование началось в 2008-03-09 01:57:28, завершено в 2008-03-09 01:58:39.
Скопировано 1 файлов (606,45 МБ, 1 каталогов), пропущено 7 файлов
Использование HoboCopy для резервного копирования всего каталога
Гораздо более полезная задача - сделать резервную копию всей моей папки User, возможно, на внешнем жестком диске для безопасного хранения. Для этого мы хотим добавить пару аргументов командной строки.
/полный | Скопируйте все файлы |
/ skipdenied | Игнорировать любые сообщения о запрещении доступа из-за ошибок разрешения. |
/р | Копировать рекурсивно |
/ у | Не подскажите, просто скопируйте все |
Синтаксис:
hobocopy / full / skipdenied / y / r c: \ directoryname \ d: \ backupdirectory \
Давайте рассмотрим тот же пример, я хочу сделать резервную копию всего моего пользовательского каталога в d: \ backups \, поэтому я бы использовал эту команду:
hobocopy / full / skipdenied / y / r c: \ users \ geek \ d: \ backups \
Эта команда, скорее всего, займет очень много времени, поэтому вы можете вздремнуть или что-то в этом роде. В конце у вас должна быть почти идеальная копия каталога ... если есть какие-либо ошибки в разрешениях, вы будете предупреждены о файлах, которые не были скопированы. Реально любые файлы в вашем пользовательском каталоге не должны иметь этой проблемы.
Использование HoboCopy для постепенного резервного копирования диска
Hobocopy также поддерживает пошаговое резервное копирование файлов, поэтому копирует только те файлы, которые были изменены с момента последнего резервного копирования. Это работает аналогично утилитам типа rsync, за исключением того, что hobocopy сохраняет дату последней резервной копии в файле, который необходимо указать в командной строке..
/ Statefile = имя_файла | Этот флаг указывает файл, который содержит последнюю информацию о резервном копировании. |
/ инкрементный | Копировать только те файлы, которые были изменены с момента последней полной копии. |
Синтаксис:
hobocopy / incremental / statefile = имя файла / y / r c: \ имя_каталога \ d: \ backupdirectory \
Пример:
hobocopy / incremental /statefile=d:\lastbackup.dat / y / r c: \ users \ geek \ d: \ backups \
При первом запуске этой команды вам нужно будет использовать / full вместо / incremental, иначе вы получите ошибку, так как файл состояния еще не создан. После этого вы можете запустить инкрементное резервное копирование с ключом / incremental.
Это было бы отличным способом автоматического резервного копирования набора папок в рамках запланированной задачи..
Загрузите HoboCopy с sourceforge.net