Самый простой бэкап.

Давеча читал у GlumShadow про бэкапы и бесплатную comodo. Я так понимаю, софтина просто делает резервную копию из одного указанного каталога в другой. Нет, я согласен, что это нужная и полезная фича. Но зачем? Зачем ради этого ставить лишний софт?
Я для себя этот вопрос решил… Правильно, батником)))
Как это делается?
Создаём в любом каталоге текстовый документ и вставляем в него строку:

xcopy C:\My_Doc \\Alexey\dmitryan\ /c /i /v /s /e /h /g /d /y /z >>lastcopy.log

Чуть попозже я объясню, что означает каждая буковка. Пока просто вставляем и не ломаем голову.
Сохраняем, закрываем и переименовываем в backup.bat, например.
Ну, и подвешиваем запуск батника в, предположим, стандартный планировщик в винде. У меня этот вариант не прошёл (на работе), потому как каждые два месяца приходится менять пароль на компе и планировщик начинает возмущаться.
Поэтому я пошёл иным путём. Давным давно пользуюсь менеджером закачек Download Master, в котором есть встроенный планировщик. Этот самый планировщик позволяет в том числе и запускать внешние программы. Вот туда я свой батник и подвесил. Впрочем, проблему планировщика каждый может решить своими методами.
А теперь давайте разберём эту таинственную строку, которую мы записали в батник:

xcopy C:\My_Doc \\Alexey\dmitryan\ /c /i /v /s /e /h /g /d /y /z >>lastcopy.log

Xcopy — стандартная команда командной строки. Копирует файлы и каталоги, включая подкаталоги.
C:\My_Doc — путь к каталогу источнику (папка, для которой мы будем делать резервную копию).
\\Alexey\dmitryan\ — путь к каталогу-приёмнику (папка, в которую мы будем делать резервную копию). Как видите, я сохрани даже не на свой винчестер, а по локальной сети.
Далее идут ключи к команде xcopy:

  • /c — ключ, позволяющий игнорировать ошибки. Т.е. в обычном режиме при возникновении ошибки выполнение команды м.б. (при)остановлено. С этим ключом — будет продолжено выполнение коменды;
  • /i — Если источником является каталог или источник содержит подстановочные знаки и результат не существует, команда xcopy считает, что результат — это имя каталога, и создает новый каталог. Затем xcopy копирует все указанные файлы в новый каталог. По умолчанию команда xcopy запрашивает подтверждение, является ли параметр результат каталогом или файлом;
  • /v — Проверяет каждый скопированный файл на соответствие его оригиналу;
  • /s — ключ для копирования НЕ пустых каталогов и подкаталогов;
  • /e — ключ для копирования и пустых каталогов тоже (работает в паре с предыдущим ключом);
  • /h — Копирует системные и скрытые файлы. По умолчанию команда xcopy не копирует системные и скрытые файлы;
  • /g — Создает незашифрованные файлы-результаты;
  • /d[:мм-дд-гггг] — Копирует только файлы, измененные не ранее заданной даты. Если не включить значение мм-дд-гггг, команда xcopy копирует все файлы-источники, которые новее существующих файлов-результатов. Эта возможность позволяет обновлять только измененные файлы;
  • /y — Устраняет выдачу запроса на подтверждение перезаписи существующего конечного файла. Т.е. при копировании тысячи файлов, вас не будут тысячу раз спрашивать, хотите ли перезаписать файл, а просто их перезапишут;
  • /z — Копирует по сети в режиме перезапуска. Т.е. при сбоях сети копирование будет пытаться восстановиться и при дачном подключении — продолжится.

На этом с ключами всё. Последний элемент моей команды (совершенно не обязателен. скорее даже не желателен):

>>lastcopy.log

Ээээ… Это перенаправление стандартного вывода в файл. Тихо-тихо! Сейчас объясню человеческим языком. Если запустить команду без вот этого вот параметра, то в консоли быстро-быстро побегут какие-то строчки. А вот этот параметр все эти строчки сохраняет в файл lastcopy.log. При этом в консоли ничего не отображается. Это и есть «перенаправление стандартного вывода»! 🙂 Вобщем, фича ненужная и вредная, потому как вскоре вы забудете про этот файл lastcopy.log и он разрастётся до немыслимых размеров.
Вот и всё! Юзайте на здоровье! 🙂
PS Подробнее про команду xcopy и многие другие можно почитать в справке windows, которая лежит по адресу (системный раздел):\WINDOWS\Help\ntcmds.chm

Запись опубликована в рубрике HOWTO, windows, компьютерное с метками , , , , , . Добавьте в закладки постоянную ссылку.

10 комментариев на «Самый простой бэкап.»

    • Dandr говорит:

      Можно, но надо ли? Мне, к примеру, просто нужна копия на второй машине. А так — можно и тар, и зип, и (возможно) изо. Да и обычному узеру это нах не нужно)

  1. lilumi говорит:

    давненько я с батниками не игрался. а какое поведение этой команды если комп по сети недоступен?

    • Dandr говорит:

      Ну, поскольку на консоль вообще не выводится, то она просто висит. Впрочем, как я понимаю, когда траблы с сеткой, то консоль висит очень долго. Кстати, там можно поиграться с потоками вывода. Если не ошибаюсь, 1 — это рабочий отчёт, а 2 — сообщения об ошибках. Т.е. можно сделать 1>>lastcopy.log 2>>error.log. Ну, думаю, ты понял, что получаем на выходе))

  2. маяк говорит:

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

    • Dandr говорит:

      Да, про скобочки я в курсе. Просто мне как-то нужна была историю копирования, а потом так и оставил. Периодически чищу.

      плюс, если отрабатывать еррорлевелы выхода xcopy, несложно варнить юзера о неудаче.

      Ээээ… Шо?

  3. маяк говорит:

    errorlevel
    вот они, последствия отсутствия знакомства с досом!

  4. Barloggg говорит:

    ну я пользую архиватор с разборкой файлов по расширению — какие паковать, а какие нет. так что бекап получается без мусора и временных файлов.

Добавить комментарий