Делаем резервные копии с помощью BAT-файла

18 августа 2008 г. Просмотров: 25112 RSS 17
Дневник » Полезные советы

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

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

  • выбор исходных данных (каталог, файлы);
  • выбор куда копировать (каталог);
  • непосредственно копирование.
Так вот для того, чтобы выполнить все эти операции совсем не обязательно прибегать к помощи сторонних программ. Всё необходимое уже есть в Windows.

Для того, чтобы скопировать файл/каталог используется команда xcopy. Она имеет много параметров, но в общем случае указывается так:

xcopy "D:\myfiles\*.*" "j:\backup\myfiles\*.*"
Данная команда скопирует каталог «d:\myfiles\» в «j:\backup\myfiles\».

Итак наши действия очень просты. Вначале откроем Notepad2. В нем нужно указать те каталоги, которые следует резервировать. Лично у меня важные данные хранятся в нескольких каталогах: «txt», «work» и т.д.

Вторым параметром мы указываем куда следует скопировать. Обычно я для резервирования использую внешний жесткий диск (USB).

Для того, чтобы Windows при каждом его подключении присваивала одну и ту же букву диска, нужно войти в Панель управления - Администрирование - Управление Компьютером - Управление дисками. На подключенном диске кликните правой кнопокй мыши и выберите «Изменить букву диска или путь к диску...». В открывшемся окне выберите «Изменить» и укажите нужную букву. Например, у меня указано «J».

Для удобства лучше сохранять имена каталогов, чтобы потом не запутаться. А сам бэкап я размещаю в отдельном каталоге «backup».

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

Вот рабочий пример резервирования кошельков WEBMONEY и Яндекс-Деньги:

xcopy "C:\Program Files\WEBMONEY\*.*" "j:\backup\WEBMONEY\*.*" /E /F /H /R /K /Y /D
xcopy "C:\Program Files\Wallet\*.*" "j:\backup\Wallet\*.*" /E /F /H /R /K /Y /D
Эти строки нужно скопировать в Notepad2 и сохранить в файле с расширением «.bat», например «backup.bat». Теперь нам достаточно только запустить его и все будет сделано автоматически.

Теперь обратите внимание, что пути мы указываем в кавычках «"» - это требование Windows для длинных имен. Каталоги разделяются обратным слэшем «\». В конце указываются параметры для xcopy.

То есть вам нужно только указать ваши каталоги для резервирования и сохранить как «backup.bat». Вы можете сделать несколько таких файлов: процесс копирования может иногда занимать много времени, поэтому какие-то совсем критичные данные я копирую чаще - для них существует другой файл «QiuсkBACKUP.BAT».

Естественно вам нужно сделить за тем, чтобы на приёмном диске было достаточно места.

Теперь следующий момент, с которым вы можете столкнуться - неверная кодировка текста. Дело в том, что русские буквы для DOS (где и происходит копирование) отличаются от Windows (где вы создали bat-файл). Например у меня есть каталог «c:\Избранное\». Если я запущу bat-файл, то ничего не произойдет, поскольку xcopy его просто не найдет. Поэтому наш bat-файл нужно преобразовать в DOS-кодировку (её часто называют «OEM»).

Для этого мы выделяем такие строчки в Notepad2 и жмем Ctrl+Shift+O (или Edit - Convert - To OEM Text). Вы увидите «белиберду», но не пугайтесь, так и должно быть. В моем примере это выглядит так: «c:\?§Ўа ­­®Ґ\»

Если у вас есть Total Commander, то вы можете просмотреть этот файл по F3 и в просмотрщике переключить кодировку - клавиша «S».

Следующая задача, которой я не пользуюсь, но возможно вам пригодится - это копирование актуальной версии каталога, а старый бэкап переименовывается в «old».

Здесь задача совсем несложная: вначале нужно удалить старый «old», после этого переименовать текущий бэкап в «old» и скопировать как обычно xcopy. Вот пример резервирования каталога «c:\work\»:

del "j:\backup\work_old\" /s /q
rmdir "j:\backup\work_old\" /s /q
rename "j:\backup\work\" "work_old"
xcopy "c:\work\*.*" "j:\backup\work\*.*" /E /F /H /R /K /Y /D
Команда «del» удаляет все файлы из каталога. Команда «rmdir» удаляет пустой каталог. Команда «rename» переименовывает файлы. А командой «xcopy» мы, как обычно, копируем файлы.


twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru friendfeed.com google.com yandex.ru
Комментариев: 17
  1. Давно пользуюсь данной техникой. Действительно, все очень просто и удобно.

  2. Еще можно подключить к всему этому WinRar с команднной строки.

    Тоесть при таком бэкапе попутно все сжимать на лету.

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

  3. Спасибо, сделал себе такое, очень удобно.

  4. Спасибо, Максим, за описание столь полезного и простого способа копирования.

    Помню как-то Вы упоминали о таком способе резервного копирования, но не описали подробно. Исправились =)

  5. Я в своей практике много вариантов "бакапирования" пробовал, в том числе и подобные (эдакий без замутов и всем все понятно - вариант для конторы, кстати, слабо заменимый).

    А лично для себя давно и бесповоротно выбрал (из ~20 разных бэкаперов, что нашел тогда) Genie Backup Manager. Все же, в определенный момент надоедает править батники.. ;)

  6. Вообще оказывается оч даже удобно, спасибо за помощь.

  7. Интересный способ. Но все равно считаю более удобным пользоваться специальным софтом (как тот же GBM в комменте Leo).

  8. Спасибо за статью,всё просто и удобно !

  9. парни как защитить диск от перезаписи :cool:

  10. Есть интересный сайт с примерами по данной теме http://cerber.synkmaster.ru

  11. Bat-файл можно создать и в обычном блокноте (notepad.exe) в DOS кодировке.Для этого просто выбрать шрифт Terminal

  12. 2011-01-25 в 11:48:18 | Николай#12

    в принципе всё ясно, но всё же... как же сделать так чтобы xCopy скопировала несколько папок, названых русскими именами??? менял шрифт в батнике результат тот же - Не найден файл: ╥хёЄ. а смысла в открытии Listerом и нажатии кнопки S я вообще не увидел, т. к. меняется отображение. при повторном открытии всё возвращается на круги своя. разъясните, а? очень нужно. заранее благодарен!!

  13. xCopy консольная команда, поэтому для неё русский язык должен быть в кодировке OEM (866). Поэтому bat-файл лучше всего писать в Notepad2 (или аналогичном): File - Encoding - More (или F9). В нём выбираем OEM (866).

  14. 2011-01-25 в 12:15:48 | Николай#14

    открыл в AkelPad там есть функция Сохранить в... и выбор кодировки. после этого всё получилось. Я так понял тот же, например, Lister меняет только отображение и не пересохраняет файл в другой кодировке?

  15. Еще раз читайте мой коммент, там всё по-русски написано.

  16. на крайняк можно *.txt открыть через ворд) Он должен спросить в какой кодировке его читать. Выбираем досовскую, редактируем, сохраняем, радуемся жизни

  17. xcopy "C:\Program Files\WEBMONEY\*.*" "j:\backup\WEBMONEY\*.*" /E /F /H /R /K /Y /D
    xcopy "C:\Program Files\Wallet\*.*" "j:\backup\Wallet\*.*" /E /F /H /R /K /Y /D
    - синтаксическая ошибка. правильно будет:

    xcopy "C:\Progra~1\WEBMONEY\*.*" "j:\backup\WEBMONEY\*.*" /F/Y

    xcopy "C:\Progra~1\Wallet\*.*" "j:\backup\Wallet\*.* /F /Y - этих двух значений достаточно

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена

Имя и сайт используются только при регистрации

Зарегистрируйтесь, чтобы получать уведомления о новых комментариях по email.

Авторизация Войти через loginza

(обязательно)