Онлайн-рабочие станции OnWorks Linux и Windows

Логотип

Бесплатный хостинг в Интернете для рабочих станций

<Предыдущая | Содержание: | Следующая>

Синхронизация файлов и каталогов

Общая стратегия создания резервной копии системы предполагает синхронизацию одного или нескольких каталогов с другим каталогом (или каталогами), расположенными либо в локальной системе (обычно на каком-либо съемном запоминающем устройстве), либо в удаленной системе. Например, мы можем иметь локальную копию разрабатываемого веб-сайта и время от времени синхронизировать ее с «действующей» копией на удаленном веб-сервере.

В Unix-подобном мире предпочтительным инструментом для этой задачи является Rsync. Эта программа может синхронизировать как локальные, так и удаленные каталоги, используя протокол удаленного обновления rsync, который позволяет Rsync чтобы быстро обнаружить различия между двумя каталогами и выполнить минимальный объем копирования, необходимый для их синхронизации. Это делает Rsync очень быстрый и экономичный в использовании по сравнению с другими видами программ копирования.

rsync вызывается следующим образом:

Rsync варианты источник пункт назначения

в котором источник и назначение являются одним из следующих:


● Локальный файл или каталог.

● Удаленный файл или каталог в виде [пользователь@]хост:путь

● Удаленный сервер rsync, указанный с URI rsync://[пользователь@]хост[:порт]/путь

Обратите внимание: либо источником, либо местом назначения должен быть локальный файл. Удаленное копирование не поддерживается.

Давай попробуем Rsync в некоторых локальных файлах. Для начала давайте очистим нашу Foo каталог:


[я @ linuxbox ~] $ rm -rf foo/*

[я @ linuxbox ~] $ rm -rf foo/*


Далее мы синхронизируем детская площадка каталог с соответствующей копией в Foo:


[я @ linuxbox ~] $ rsync -av игровая площадка foo

[я @ linuxbox ~] $ rsync -av игровая площадка foo


Мы включили оба -a опция (для архивирования-вызывает рекурсию и сохранение атрибутов файла) и -v опция (подробный вывод), чтобы сделать зеркало детская площадка каталог в Foo. Пока команда выполняется, мы будем видеть список копируемых файлов и каталогов. В конце мы увидим сводное сообщение следующего содержания:



отправлено 135759 байт получено 57870 байт 387258.00 байт/сек общий размер 3230 ускорение 0.02

отправлено 135759 байт получено 57870 байт 387258.00 байт/сек общий размер 3230 ускорение 0.02


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



[я @ linuxbox ~] $ rsync -av игровая площадка foo

создание списка файлов... готово


отправлено 22635 байт получено 20 байт 45310.00 байт/сек общий размер 3230 ускорение 0.14

[я @ linuxbox ~] $ rsync -av игровая площадка foo

создание списка файлов... готово


отправлено 22635 байт получено 20 байт 45310.00 байт/сек общий размер 3230 ускорение 0.14


Обратите внимание, что списка файлов не было. Это потому что Rsync обнаружил, что различий между ~/детская площадка и ~/foo/детская площадка, и поэтому ему не нужно было ничего копировать. Если мы изменим файл в детская площадка и запустить Rsync еще раз:


[я @ linuxbox ~] $ сенсорная игровая площадка/dir-099/file-Z [я @ linuxbox ~] $ rsync -av игровая площадка foo создание списка файлов... готово

игровая площадка / dir-099 / file-Z

отправлено 22685 байт получено 42 байт 45454.00 байт/сек общий размер 3230 ускорение 0.14

[я @ linuxbox ~] $ сенсорная игровая площадка/dir-099/file-Z [я @ linuxbox ~] $ rsync -av игровая площадка foo создание списка файлов... готово

игровая площадка / dir-099 / file-Z

отправлено 22685 байт получено 42 байт 45454.00 байт/сек общий размер 3230 ускорение 0.14


Мы видим, что Rsync обнаружил изменение и скопировал только обновленный файл.

В качестве практического примера давайте рассмотрим воображаемый внешний жесткий диск, который мы использовали ранее с деготь. Если мы подключим диск к нашей системе и он снова смонтируется по адресу /медиа/БигДиск, мы можем выполнить полезное резервное копирование системы, сначала создав каталог с именем /резервное копирование на внешнем диске, а затем с помощью Rsync чтобы скопировать самое важное из нашей системы на внешний диск:



[я @ linuxbox ~] $ mkdir /media/BigDisk/резервная копия

[я @ linuxbox ~] $ sudo rsync -av --delete /etc /home /usr/local

/медиа/БигДиск/резервное копирование

[я @ linuxbox ~] $ mkdir /media/BigDisk/резервная копия

[я @ linuxbox ~] $ sudo rsync -av --delete /etc /home /usr/local

/медиа/БигДиск/резервное копирование


В этом примере мы скопировали / и т.д., / Главнаякачества / USR / местные каталоги из нашей системы на наше воображаемое запоминающее устройство. Мы включили --удалять возможность удаления файлов, которые могли существовать на устройстве резервного копирования и больше не существовали на исходном устройстве (это не имеет значения при первом резервном копировании, но будет полезно при последующих копиях). Повторяем процедуру подключения внешнего диска и запуска этого Rsync Команда будет полезным (хотя и не идеальным) способом резервного копирования небольшой системы. Конечно, псевдоним и здесь будет полезен. Мы могли бы создать псевдоним и добавить его в нашу

.bashrc для обеспечения этой функции:


alias backup='sudo rsync -av --delete /etc /home /usr/local

/медиа/БигДиск/резервное копирование'

alias backup='sudo rsync -av --delete /etc /home /usr/local

/медиа/БигДиск/резервное копирование'


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


 

Лучшие облачные вычисления для ОС в OnWorks: