Делаем резервные копии с помощью xcopy
18-08-2008Время чтения ~ 4 мин.Софт 123881
Программ для создания резервных копий (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 я вообще не увидел, т. к. меняется отображение. при повторном открытии всё возвращается на круги своя. разъясните, а? очень нужно. заранее благодарен!!
xCopy консольная команда, поэтому для неё русский язык должен быть в кодировке OEM (866). Поэтому bat-файл лучше всего писать в Notepad2 (или аналогичном): File - Encoding - More (или F9). В нём выбираем OEM (866).
открыл в 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 пишу путь "куда", а потом иду "туда" и вижу там внутрях такую же папку(то же имя, те же подкаталоги, те же атрибуты у файлов и папок, а также отсутствие батника, через который я это сделал).