Применение rsync для локальной пересылки и синхронизации файлов

Применение rsync для локальной пересылки и синхронизации файлов

Проблема

Требуется организовать синхронизацию файловых деревьев на рабочей станции. Ваша рабочая станция используется для создания веб-каталогов, графических галерей и других сложных файловых структур. В рабочем каталоге файлы редактируются, а затем копируются в другой каталог для загрузки. Вы хотите использовать какое-нибудь более быстрое и интеллектуальное средство, чем команда ср, которая работает слишком медленно и не следит за тем, какие файлы нужно копировать, а какие — нет.

Решение

Организуйте синхронизацию файлов при помощи программы rsync. Для ускорения программа копирует только изменившиеся файлы и отслеживает изменения внутри файлов и деревьев.

Обязательно установите последнюю версию rsync со всеми исправлениями и заплатками безопасности. Вам нужна версия 2.6 и выше: $ rsync --version

rsync version 2.6.6 protocol version 26

Следующая команда копирует каталог веб-файлов в каталог, содержимое которого позднее будет переслано на веб-сервер:

S rsync -av --stats /home/pearlbear/webs -/web_upload building file list...done

Number of files: 254

Number of files transferred: 235

Total file size: 8923014 bytes

Total transferred file size: 8923014 bytes

Literal data: 8923014 bytes

Matched data: 0 bytes

File list size: 6490

Total bytes written 8939848

Total bytes read: 3780

Результат копирования проверяется командой

$ Is ~/web_upload webs

ВНИМАНИЕ

Здесь есть небопьшэя тонкость: /home/pearlbear/images копирует содержимое /images и сам каталог. Если добавить завершающую косую черту (/home/pearlbear/images/), будет скопировано только содержимое каталога /images, но не сам каталог. Завершающая косая черта важна только в исходном каталоге, а в приемном каталоге она игнорируется.

Если в каталоге /home/pearlbear/webs появятся новые файлы или в какие-то из существующих файлов будут внесены изменения, просто выполните ту же команду заново. Rsync синхронизирует только изменения.

Для копирования можно выбрать несколько исходных каталогов: $ rsync -av --stats /home/pearlbear/webs /home/pearlbear/webJmages -/webjjpload

Комментарий

Если из исходного каталога были удалены какие-либо файлы, rsync не будет авто-матически удалять их из синхронизированного каталога. Чтобы файлы были удалены, включите в командную строку ключ —delete: $ rsync -av --delete /home/pearlbear/webs ~/web_upload Ключи -av означают соответственно архивацию (Archive) с сохранением файловых разрешений и владельцев и расширенный вывод (Verbose).

Будьте внимательны с ключом -delete. Если из архива rsync будет случайно удален нужный файл, восстановить его уже не удастся. Также следите за правильностью путей, потому что в случае ошибки ключ —delete спокойно удалит целый каталог или файловое дерево.

Программа rsync отлично подходит для синхронизации локальных архивов. Если вы занимаетесь веб-дизайном, работаете над программным проектом, собираете файлы для записи на компакт-диск или выполняете операции с любой крупной коллекцией файлов, доверьте rsync отслеживание и синхронизацию всех изменений — это сэкономит вам немало времени.


Ведете ли вы блог?

Да
Нет
Планирую


Результаты опроса

Новостной блок