Делаем резервные копии с помощью xcopy
18-08-2008Reading time ~ 4 min.Софт 122396
Программ для создания резервных копий (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» мы, как обычно, копируем файлы.
Давно пользуюсь данной техникой. Действительно, все очень просто и удобно.
Еще можно подключить к всему этому WinRar с команднной строки.
Тоесть при таком бэкапе попутно все сжимать на лету.
Кстати говоря у Рара довольно много интересных параметров командной строки, можно даже сделать резервирование со сверкой дат изменения, и не затрагивать не измененные данные, обновляя только измененное и добавляя новое.
Спасибо, сделал себе такое, очень удобно.
Спасибо, Максим, за описание столь полезного и простого способа копирования.
Помню как-то Вы упоминали о таком способе резервного копирования, но не описали подробно. Исправились =)
Я в своей практике много вариантов "бакапирования" пробовал, в том числе и подобные (эдакий без замутов и всем все понятно - вариант для конторы, кстати, слабо заменимый).
А лично для себя давно и бесповоротно выбрал (из ~20 разных бэкаперов, что нашел тогда) Genie Backup Manager. Все же, в определенный момент надоедает править батники.. ;)
Вообще оказывается оч даже удобно, спасибо за помощь.
Интересный способ. Но все равно считаю более удобным пользоваться специальным софтом (как тот же GBM в комменте Leo).
Спасибо за статью,всё просто и удобно !
парни как защитить диск от перезаписи :cool:
Есть интересный сайт с примерами по данной теме http://cerber.synkmaster.ru
Bat-файл можно создать и в обычном блокноте (notepad.exe) в DOS кодировке.Для этого просто выбрать шрифт Terminal
в принципе всё ясно, но всё же... как же сделать так чтобы xCopy скопировала несколько папок, названых русскими именами??? менял шрифт в батнике результат тот же - Не найден файл: ╥хёЄ. а смысла в открытии Listerом и нажатии кнопки S я вообще не увидел, т. к. меняется отображение. при повторном открытии всё возвращается на круги своя. разъясните, а? очень нужно. заранее благодарен!!
открыл в AkelPad там есть функция Сохранить в... и выбор кодировки. после этого всё получилось. Я так понял тот же, например, Lister меняет только отображение и не пересохраняет файл в другой кодировке?
Еще раз читайте мой коммент, там всё по-русски написано.
на крайняк можно *.txt открыть через ворд) Он должен спросить в какой кодировке его читать. Выбираем досовскую, редактируем, сохраняем, радуемся жизни
- синтаксическая ошибка. правильно будет:
xcopy "C:\Progra~1\WEBMONEY\*.*" "j:\backup\WEBMONEY\*.*" /F/Y
xcopy "C:\Progra~1\Wallet\*.*" "j:\backup\Wallet\*.* /F /Y - этих двух значений достаточно
Я крайне опасаюсь, что ооOчень опоздал с вопросом, но, пожалуйста, ответьте как сделать резервную копию текущего каталога с его текущим именем?
Тобишь кидаю батник в папку, оттуда его запускаю, в открывшемся окне cmd пишу путь "куда", а потом иду "туда" и вижу там внутрях такую же папку(то же имя, те же подкаталоги, те же атрибуты у файлов и папок, а также отсутствие батника, через который я это сделал).