rsync
Полезные параметры
-z,--compress— сжатие потока при передаче. Удобно использовать при скачивании большого лога по сети--partial— сохранять частично переданное (докачка)--progress— показ процента выполнения-P— эквивалент для--partial--progress-r,--recursive— рекурсивно обрабатывать каталоги-a,--archive— архивный. Эквивалент-rlptgoD(--recursive--link--perms--times--group--owner--devices). Рекурсивно, копируя симлинки, права, время модификации, группу, владельца, инфу об устройствах--info=progress2— инфа по всей передаче, а не по отдельным файлам. Используется без--progress-R,--relative— использовать относительные пути-u,--update— не переписывать более новые файлы
Слеш в конце исходного пути
В зависимости от того, стоит ли слэш в конце пути, rsync копирует либо саму папку, либо её содержимое.
Если указать слэш в конце — будет скопировано только содержимое папки. Без слэша — скопируется сама папка.
Копирование каталога. Каталог images появится в новом месте
Копирование содержимого каталога. Каталог images не появится в новом месте
Относительные пути
Позволяет использовать относительные пути, которые будут воссозданы в точке назначения. Работает с третьей версии rsync.
Например, надо засинхронить несколько файлов Битрикса, находящихся в разных каталогах.
В папке /hdd/sites/test-site/ повторится структура папок после /./
rsync \
--relative \
host:/var/www/production-site/./www/bitrix/.settings.php \
host:/var/www/production-site/./www/bitrix/php_interface/dbconn.php \
/hdd/sites/test-site/
Примеры
-
копирование каталога. Исходная папка появится в месте назначения
-
копирование файлов каталога. Исходная папка не появится в месте назначения
-
cинхронизация модуля bizproc с удалённым сервером
-
синхронизация нескольких файлов
-
копирование со сменой владельца и группы
-
перенос каталога с исключением файлов по типу. Чувствителен к регистру
rsync --recursive --partial --info=progress2 --exclude="*.zip" --exclude="*.rar" ssh-host:/sites/my-site/www/upload/main /site/www/upload # указание исключения в отдельном файле rsync --recursive --partial --info=progress2 --exclude-from=rsync-exclude.txt ssh-host:/sites/my-site/www/upload/main /site/www/upload
-
rsyncчерез ssh с указанием порта (-e,-rsh=COMMAND) -
rsyncс подменой пользователя на удалённой стороне. Например, если надо залить файл от имени пользователяwww-data. На удалённой стороне должне быть настроен беспарольный запускrsyncот имениwww-data
- список файлов через массив —
"${SOURCES[@]}". Позволяет использовать комментарииSOURCES=( # первое множество файлов "host:/var/www/production-site/./www/bitrix/components" "host:/var/www/production-site/./www/bitrix/modules" # второе множество файлов "host:/var/www/production-site/./www/upload/iblock" "host:/var/www/production-site/./www/upload/main" ) rsync --relative "${SOURCES[@]}" --recursive /hdd/sites/test-site/