Регулярное резервное копирование большого объема пользовательских данных на внешний (USB) диск.


 
 

Часто возникает необходимость регулярного создания копии пользовательских данных. Размер дисков сейчас стремительно увеличивается и соответственно, объем данных также растет. Возникаеи задача инкрементального копирования, т.е. первый раз копируется все, а потом - только измененные файлы. Если взять частный случай - копирования папки в папку и оставить в стороне вопросы сетевого взаимодействия, то задача существенно упрощается.

Рассмотрим вкратце 2 случая - для Linux и для Windows.
 

LINUX

Резервное копирования только обнавленных файлов (пользовательских) можно выполнить командой

cp -a -r -u source dest

-a  - сохраняет атрибуты файлов
-r  - рекурсивное копирование
-u - только более новые версии
 

Программа сделает все, что требуется, только:

  1.  не удалит лишние файлы, которых нет в источники
  2. определение изменений по времени создания может быть иногда неточным ( если пользователь в источнике заменил некоторый файл более старой версией, то это будет пропущено)
  3. Копирование большого объема данных старыми версиями программы cp может быть очень обременительно для жесткого диска, ведь программа предназначена не совсем для этого.
Существует специальная программа rsynh со множеством опций. НАчинающему пользователю может быть несколько затружнительно ориентироваться в ключах командной строки.

Вашему вниманию предлагается простая программа для резервного копирования (синхронизации содержимого 2х каталогов). Она предназначена только для пользовательских файлов и имеет среднюю скорость работы. Не ручаюсь за абсолютную точность ее работы, но на практике она меня здорово выручала. Копирует каталог один в один. Синтаксис несколько отличен от cp. Файлы заменяются только если они более поздние по дате или различен размер. Наиболее важные данные изредка лучши копировать один в один программами копирования или архивирования. Данная программа может использоваться для синхронизации данных с NTFS разделов. Она минимально 'нагружает' жесткий диск. Эти разделы наиболее чуствительны к копированию большого количества файлов. Если у кого диск с трещеткой, то он может слышать ужасающие звуки при копировании. Исключение составляет функция копирования/вставки через проводник Windows. Она написана грамотно. Я тут заменил старую версию программы новой и плохо тестированной. Если что, исходники прилагаются. При написании программы 2 вещи представляли трудности: малоупотребительные символы в именах файлов и диагностика файлов большого размера (больше 8 Гб). Не знаю, верно ли я решил эти задачи.
Если у кого возникнет маловероятная задача восстановить весь backup на старом месте, то можнос сделать примерно так:

rm -rf path/old_dir
cp -rv backup_dir path/

Пример создания архива (первый и последующие вызовы одинаковы):

copyb    dir1(const)  dir2(backup)

download copyb
 



Windows

Существует системная утилита xcopy.exe с расширенными опциями командной строки.

Пример использования:

xcopy   /F/E/D/C/Y/H/R/K/O/X/G  source dest

Будет выполнено рекурсивное копирование с сохранением атрибутов файлов и заменой копий только более новыми по дате. Как и в предыдущем примере, устаревшие файлы и каталоги не будут удалены и обновление по дате не отражает всех возможных ситуаций. Для простейшего случая и этого может быть достаточно.
 

Для простейшего копирования предлагается программа synh. Вы можете воспользоваться консольной утилитой и создать командный файл, включающий несколько директорий или использовать графическую оболочку synhgui.

Программа имеет 2 режима работы:
 

  1. Копирование только более поздних версий файлов
  2. Более точный и более медленный режим где файлы копируются если различны дата или размер.
Для скорости можно сначала выполнить первый вариант, потом второй. Если вы пользуетесь графичыеской оболочкой, то в эти подробности можно не вникать.
Программа предназначена только для пользовательских файлов и наиболее важные файлы все же лучше хоть изредка сохранять путем полного резервного копирования или архивайии.

Пример командного файла для синхронизации одного каталога:
 

synh %1 %2
synh %1 %2 restore

В первый проход выполняется копирование только новых или более свежих версий файлов.
Второй проход уточняющий.
Если необходимо восстановить копию папки на старом (или новом месте), то последовательность команд такая же. (это не тестировалось)

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

"C:\Program Files\myapp"

Вообще, пробелов лучше избегать.

download SynhGUI
 
 



 Аналогичные программы для Windows:
 
 
  1. System Backup
  2. Nero Backup
  3. Acronic
  4. ...