- Как исключить файлы и каталоги с помощью Rsync
- Подготовка
- Исключить определенный файл
- Исключить конкретный каталог
- Исключить несколько файлов или каталогов
- Исключить несколько файлов или каталогов на основе шаблона
- Выводы
- Как использовать rsync для исключения файлов и каталогов при передаче данных
- Необходимые условия
- Принцип работы опции исключения rsync
- Исключение определенного файла
- Исключение определенного каталога
- Исключение файлов или каталогов на основе шаблона
- Исключение определенного типа файлов
- Исключение файлов по размеру
- Исключение нескольких файлов или каталогов
- Исключение файлов и каталогов из списка
- Заключение
- Похожие записи:
Как исключить файлы и каталоги с помощью Rsync
Rsync — это быстрая и универсальная утилита командной строки, которая синхронизирует файлы и папки между двумя местоположениями через удаленную оболочку.
С помощью Rsync вы можете зеркалировать данные, создавать инкрементные резервные копии и копировать файлы между системами. При копировании данных вы можете исключить один или несколько файлов или каталогов на основе их имени или местоположения.
В этом руководстве мы покажем вам, как исключить файлы и каталоги с помощью rsync.
Подготовка
Вы должны иметь базовые знания о том, как работает rsync .
В приведенных ниже примерах мы будем использовать rsync с параметром -a . Это указывает rsync рекурсивно синхронизировать каталоги, передавать специальные и блочные устройства и сохранять символические ссылки, время модификации, группу, владение и разрешения.
При исключении файлов или каталогов вам необходимо использовать их относительные пути к исходному каталогу.
Есть два варианта указать файлы и каталоги, которые вы хотите исключить:
- Из командной строки с помощью параметра —exclude .
- Из файла с помощью параметра —exclude-from .
Исключить определенный файл
Чтобы исключить конкретный файл, передайте относительный путь к файлу в параметре —exclude .
В следующем примере файл src_directory/file.txt не будет перенесен:
rsync -a --exclude 'file.txt' src_directory/ dst_directory/
Исключить конкретный каталог
Исключение определенного каталога аналогично исключению файла, просто передайте относительный путь к каталогу параметру —exclude как показано ниже:
rsync -a --exclude 'dir1' src_directory/ dst_directory/
Если вы хотите исключить содержимое каталога, но не сам каталог, используйте dir1/* вместо dir1 :
rsync -a --exclude 'dir1/*' src_directory/ dst_directory/
Исключить несколько файлов или каталогов
Чтобы исключить несколько файлов или каталогов, просто укажите несколько параметров —exclude :
rsync -a --exclude 'file1.txt' --exclude 'dir1/*' --exclude 'dir2' src_directory/ dst_directory/
Если вы предпочитаете использовать одну опцию —exclude вы можете перечислить файлы и каталоги, которые вы хотите исключить, в фигурных скобках <> разделенных запятой, как показано ниже:
rsync -a --exclude= src_directory/ dst_directory/
Если количество файлов и / или каталогов, которые вы хотите исключить, велико, вместо использования нескольких параметров —exclude вы можете указать файлы и каталоги, которые вы хотите исключить в файле, и передать файл в —exclude-from вариант.
Команда ниже делает то же самое, что и команда выше:
rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/
Исключить несколько файлов или каталогов на основе шаблона
С помощью rsync вы также можете исключить файлы и каталоги на основе шаблона, который соответствует имени файла или каталога.
Например, чтобы исключить все файлы .jpg вы должны запустить:
rsync -a --exclude '*.jpg*' src_directory/ dst_directory/
Немного сложнее исключить все другие файлы и каталоги, кроме тех, которые соответствуют определенному шаблону. Предположим, вы хотите исключить все остальные файлы и каталоги, кроме файлов с .jpg .
Один из вариантов — использовать следующую команду:
rsync -a -m --include='*.jpg' --include='*/' --exclude='*' src_directory/ dst_directory/
При использовании нескольких параметров включения / исключения применяется первое правило сопоставления.
- —include=’*.jpg’ — Сначала мы .jpg все файлы .jpg .
- —include=’*/’ — Затем мы src_directory все каталоги внутри каталога в src_directory . Без этого rsync будет копировать только файлы *.jpg в каталог верхнего уровня.
- -m — Удаляет пустые каталоги.
Другой вариант — передать вывод команды find в rsync:
find src_directory/ -name "*.jpg" -printf %P\0\n | rsync -a --files-from=- src_directory/ dst_directory/
- -printf %P\0\n — удалит src_directory/ из пути к файлу.
- —files-from=- — означает включать только файлы из стандартного ввода (файлы, переданные из команды find).
Выводы
В этом руководстве вы узнали, как исключить файлы и каталоги при передаче данных с помощью Rsync. Еще больше информации о Rsync можно найти на странице руководства пользователя Rsync .
Как использовать rsync для исключения файлов и каталогов при передаче данных
Rsync — это полезный инструмент командной строки Linux, который синхронизирует и копирует файлы и каталоги. Вы можете использовать этот инструмент для локальной синхронизации данных между каталогами и дисками или между двумя удаленными машинами.
Основные команды rsync в Linux синхронизируют все данные из указанного вами места. Во многих сценариях резервного копирования вы можете захотеть исключить определенные файлы, каталоги или типы файлов.
Следуя примерам в этом руководстве, вы узнаете, как исключить файлы или каталоги с помощью rsync. Мы перечислим наиболее распространенные случаи использования исключения, чтобы охватить ваше повседневное использование rsync.
Необходимые условия
- Пользователь с правами sudo или root
- Доступ к командной строке/терминальному окну
- Rsync установлен в вашей системе
Принцип работы опции исключения rsync
Опция —exclude в команде rsync использует относительные пути к исходному каталогу. Добавьте опцию —exclude к команде rsync, а затем относительный путь к каталогу или файлу(ам).
Основной синтаксис опции rsync exclude выглядит следующим образом:
rsync [OPTIONS] --exclude '[file_or_directory]' [source]/ [destination]/
Замените [source]/ именем каталога, который вы хотите использовать в качестве источника для передачи данных в другое место.
Замените [destination]/ на имя каталога, который rsync будет использовать в качестве целевого местоположения для ваших данных. Если каталог не существует, rsync создаст его для вас и перенесет файлы в этот каталог.
Чтобы создать резервную копию файлов в удаленном месте, следуйте нашему другому руководству, чтобы узнать, как копировать или передавать файлы с помощью rsync через SSH.
- Если вы не используете косую черту, исходный каталог копируется в каталог назначения, а затем содержимое этого каталога.
- Если вы используете косую черту, rsync копирует только содержимое исходного каталога без создания дополнительного уровня каталога.
Исключение определенного файла
В приведенных ниже примерах исключения rsync мы будем использовать опции -a (архив) и -v (verbose) (-av). Опция -a синхронизирует каталоги рекурсивно, сохраняя разрешения, символические ссылки, права собственности и настройки групп. Флаг -v необязателен и печатает информацию о ходе и состоянии команды rsync.
Чтобы исключить файл при передаче содержимого папки с помощью rsync, укажите файл и относительный путь.
rsync -av --exclude 'testfile1.txt' sourcedir/ destinationdir/
Эта команда позволяет скопировать файлы в destinationdir из sourcedir, но исключить testfile1.txt.
Как видно из вывода, testfile1.txt отсутствует в списке.
Если вы хотите проверить все примеры в руководстве, пожалуйста, удалите каталог назначения, прежде чем пробовать новый пример.
Для этого выполните следующую команду:
sudo rm -rf destinationdir
Исключение определенного каталога
Теперь, когда вы знаете, как использовать команду rsync —exclude file, используйте этот инструмент аналогичным образом для исключения каталога.
Укажите каталог, который вы хотите исключить (вместо имени файла):
rsync -av --exclude 'dir1' sourcedir/ destinationdir/
Эта команда скопировала содержимое sourcedir в destinationdir и исключила dir1, как видно из вывода.
Исключение файлов или каталогов на основе шаблона
Используйте звездочку * (подстановочный знак) при определении имени файла или каталога, чтобы исключить все, что соответствует шаблону.
Чтобы исключить файлы, начинающиеся с test, выполните эту команду:
rsync -av --exclude 'test*' sourcecedir/ destinationdir/
Все файлы и каталоги, соответствующие этому шаблону, будут исключены из передачи.
Аналогичным образом можно использовать подстановочный знак, чтобы исключить все каталоги, которые заканчиваются на определенный шаблон.
Выполните эту команду, чтобы исключить все каталоги, которые заканчиваются цифрой 3:
rsync -av --exclude '*3' sourcedir/ destinationdir/
Вы можете использовать звездочку до и после шаблона, чтобы дополнительно уточнить критерий —exclude.
Исключение определенного типа файлов
Инструмент rsync позволяет исключить определенные типы файлов при синхронизации данных. Используйте звездочку *, за которой следует расширение типа файла, который вы хотите исключить.
Например, вы можете захотеть создать резервную копию каталога, содержащего множество файлов .iso, резервное копирование которых вам не нужно.
Чтобы исключить определенный тип файлов, в данном случае .iso, выполните эту команду:
rsync -av --exclude '*.iso' sourcedir/ destinationdir/
Исключение файлов по размеру
Во время передачи файлов вы можете указать минимальный или максимальный размер файлов, которые вы хотите исключить. Если исходный каталог содержит много больших файлов, резервное копирование которых нежелательно, используйте параметр —max-size=size_in_mb_or_gb. Замените size_in_mb_or_gb на желаемый размер.
Например, чтобы исключить все файлы размером более 500 МБ, выполните следующую команду:
rsync -av --max-size=500m sourcedir/ destinationdir/
С другой стороны, чтобы исключить файлы меньше определенного размера, используйте опцию —min-size=size_in_mb_or_gb.
Например, вы хотите передать каталог с изображениями, но в нем много файлов миниатюр. Если все ваши изображения имеют размер более 1 МБ, то вы можете исключить все файлы меньше этого размера.
Для этого выполните следующую команду:
rsync -av --min-size=1m sourcedir/ destinationdir/
Не используйте опцию —exclude rsync при определении минимального или максимального размера файла.
Исключение нескольких файлов или каталогов
Добавьте несколько опций —exclude, чтобы исключить несколько файлов или каталогов. Вы можете комбинировать любые команды rsync —exclude folder и rsync —exclude file(s) для передачи только нужных вам данных. Любая из команд, о которых мы говорили ранее, может быть использована в одной строке.
Следующая команда исключит все файлы с расширением .txt, а также каталоги dir3 и dir4:
rsync -av --exclude '*.txt' --exclude 'dir3' --exclude 'dir4' sourcedir/ destinationdir/
Вы можете добавить столько записей —exclude, сколько вам нужно. Чтобы команда выглядела аккуратно, вы можете указать файлы и каталоги в опции —exclude, используя фигурные скобки. Разделяйте шаблоны запятой.
Например, мы можем сократить приведенную выше команду следующим образом:
rsync -av --exclude= sourcedir/ destinationdir/
Вывод показывает, что перечисленные файлы и каталоги исключены из передачи.
Исключение файлов и каталогов из списка
Когда вам нужно исключить большое количество различных файлов и каталогов, вы можете использовать флаг rsync —exclude-from. Для этого создайте текстовый файл с именами файлов и каталогов, которые вы хотите исключить. Затем передайте имя этого файла в опцию —exlude-from.
Команда выглядит следующим образом:
rsync -av --exclude-from= sourcedir/ destinationdir/
Инструмент rsync пропускает все файлы и каталоги, которые вы перечислили в файле. Вы можете добавить любой шаблон, который мы использовали в этом руководстве.
Пример файла, который мы использовали в приведенной выше команде, содержит следующие шаблоны:
Заключение
Это руководство показало вам все примеры исключения rsync, необходимые при передаче данных с помощью этого инструмента. Вы можете комбинировать шаблоны для настройки команды и исключения нескольких файлов и каталогов с помощью rsync.