MaxSite.org 11 лет
Блог вебмастера о сайтостроении
Внимание! Данная запись отмечена как устаревшая и может содержать неточную или неактуальную информацию!

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

СофтПросмотров: 79532 (738)

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

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

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

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

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

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

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

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

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

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

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

xcopy "C<img src="http://maxsite.org/uploads/smiles/raspberry.gif" width="19" height="19" alt="raspberry" style="border:0;" class="smiley">rogram FilesWEBMONEY*.*" "j:ackupWEBMONEY*.*" /E /F /H /R /K /Y /D
xcopy "C<img src="http://maxsite.org/uploads/smiles/raspberry.gif" width="19" height="19" alt="raspberry" style="border:0;" class="smiley">rogram FilesWallet*.*" "j:ackupWallet*.*" /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:ackupwork_old" /s /q
rmdir "j:ackupwork_old" /s /q
rename "j:ackupwork" "work_old"
xcopy "c:work*.*" "j:ackupwork*.*" /E /F /H /R /K /Y /D
Команда «del» удаляет все файлы из каталога. Команда «rmdir» удаляет пустой каталог. Команда «rename» переименовывает файлы. А командой «xcopy» мы, как обычно, копируем файлы.

Комментариев: 18 RSS

1Dimox19-08-2008 16:44

Давно пользуюсь данной техникой. Действительно, все очень просто и удобно.

2sin20-08-2008 22:41

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

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

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

3ihtiandr21-08-2008 13:30

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

4aLeXgO22-08-2008 14:16

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

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

5Leo23-08-2008 17:54

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

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

6Стай25-08-2008 09:09

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

7Mba27-08-2008 14:50

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

8Gordon27-08-2008 21:58

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

9stasiska18-10-2008 23:57

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

10Vini28-05-2009 18:06

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

11person@g13-08-2009 09:57

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

12Николай25-01-2011 10:48

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

13MAX25-01-2011 11:00

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

14Николай25-01-2011 11:15

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

15MAX25-01-2011 11:18

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

16Редя31-01-2012 07:14

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

17Юрий03-02-2012 14:08

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 - этих двух значений достаточно

18Игорь09-06-2017 17:17

Я крайне опасаюсь, что ооOчень опоздал с вопросом, но, пожалуйста, ответьте как сделать резервную копию текущего каталога с его текущим именем?

Тобишь кидаю батник в папку, оттуда его запускаю, в открывшемся окне cmd пишу путь "куда", а потом иду "туда" и вижу там внутрях такую же папку(то же имя, те же подкаталоги, те же атрибуты у файлов и папок, а также отсутствие батника, через который я это сделал).

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

Комментарий будет опубликован после проверки. Вы соглашаетесь с правилами сайта.

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

О сайте

Здесь вы получите самую полную информацию о создании сайтов на MaxSite CMS.