Применение 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 отслеживание и синхронизацию всех изменений — это сэкономит вам немало времени.