======Rsync копирование с исключением====== =====rsync копирование с исключением директорий и файлов.===== Имеется нагруженный web проект, окало 150 Гигов файлов.\\ Решил оптимизировать backup файлов, убрать директории которые не нужно помещать в backup. Исключения нужно указывать относительное расположение от корневого каталога копирования директории или файла. К примеру.\\ Каталог 1 /www/site/backup/ \\ Есть каталог 2 с таким же названием /www/site/sys_log/backup/ расположен он в другом месте сайта.\\ Если указать исключение ‘backup/’ то правило сопоставимо к двум директориям.\\ Указывать нужно полный путь от корневого каталога.\\ Корень /www/site/ значит указываем sys_log/backup/ и т.д.\\ Исключаем из backup директорию backup, со всеми повторениями названия директории у сайта. rsync --exclude='/backup/' -a --no-compress --info=progress2 /www/site/ /mnt/backup/site Исключаем из backup файл. rsync --exclude='/adm/adm.php' -a --no-compress --info=progress2 /www/site/ /mnt/backup/site Исключаем из синхронизации несколько директорий и файлы. * **sys_log/backup/** — не будем вовсе копировать эту директорию. * **include/*** — Директорию оставляем, но без содержимого. * **adm/adm.php** — Файл не копируем. rsync --exclude='adm/adm.php' --exclude='sys_log/backup/' --exclude='include/*' -a --no-compress --info=progress2 /www/site/ /mnt/backup/site Можно попробовать и такой вариант исключения. --exclude={'/adm/sys.php' ,'/include/arm/','/sys/mydir.html'} Либо вовсе исключить из копирования по расширению файла. --exclude '*.log' Так же все можно поместить в файл, что бы команда была короче. Создаем файл /mnt/syn_exclude.txt c таким содержимым, это мы не будем синхронизировать: /sys_log/backup/* /backup/ /sys/include/* /adm/adm.php Команда. rsync --exclude-from='/mnt/syn_exclude.txt' -a --no-compress --info=progress2 /www/site/ /mnt/backup/site Еще пример. rsync -a --no-compress --delete --info=progress2 --exclude-from='/mnt/files-exclude.txt' /var/www/site/upload/ /var/www/site-1/upload/ Содержимое файла исключений /mnt/files-exclude.txt /resize_cache/ /optimize/ /iblock.zip /__iblock/ Важная заметка — в файле files-exclude.txt исключение директорий и файлов должно начинаться со / (слэша), так rsync поймет, что файл нужно исключать начиная с начала каталога. Если не указать / (слэш) в начале путей в файле files-exclude.txt, данные будут искаться по всей директории. Если мы хотим просто оставить директорию пустой, не копировать содержимое, то можно указать исключение так '/resize_cache/*' Вот как бы и все, примеры rsync копирование с исключением директорий и файлов. Есть еще способ ограничить копирование по размеру, но я такой способ не использовал, не было нужды использовать. --max-size=550m --min-size=20m =====Ссылки и Дополнения===== * [[software:linux_server:rsync:rsync_examples|]] * [[https://rsync.samba.org/|Официальный сайт rsync]] * [[https://www.fryaha.ru/rsync-copy-with-exception/|Ссылка на статью автора]]