======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/|Ссылка на статью автора]]