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

Проблема:
Необходимо организовать синхронизацию файловых деревьев на рабочей станции. Ваша станция задействована в создании веб-каталогов, графических галерей и других сложных файловых структур. При этом файлы редактируются в рабочем каталоге и затем перемещаются в другой каталог для загрузки на сервер. Стандартная команда cp не соответствует вашим потребностям, так как она медленно обрабатывает большие объемы данных и не учитывает, какие файлы были изменены.

Решение:
Используйте rsync для синхронизации файлов. Этот инструмент обеспечивает быструю копирование, передавая только измененные файлы и блоки. Убедитесь, что у вас установлена последняя версия rsync, версии 2.6 или выше:

$ rsync --version
rsync version 2.6.6 protocol version 26

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

$ 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

Вы можете проверить результат с помощью команды:

$ ls ~/web_upload
webs

Обратите внимание на то, как интерпретируются пути: /home/pearlbear/images копирует содержимое /images и сам каталог, в то время как /home/pearlbear/images/ копирует только содержимое /images.

Если файлы в исходном каталоге обновляются или добавляются, просто выполните команду rsync снова. Она автоматически синхронизирует только измененные файлы. Для копирования из нескольких исходных каталогов:

$ rsync -av --stats /home/pearlbear/webs /home/pearlbear/web_images ~/web_upload

Комментарий:
Если файлы были удалены из исходного каталога, rsync по умолчанию не будет удалять их из целевого каталога. Для этого используйте ключ --delete. Однако будьте осторожны с этим ключом, потому что ошибочное удаление может привести к потере важных данных. Rsync идеально подходит для синхронизации локальных каталогов, особенно при работе над большими проектами, такими как веб-дизайн или разработка программного обеспечения.

См. также: Ksync(l).