rsync копирование с исключением

Дата | 24.11.2021

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

Rsync примеры.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *