Поиск по сайту:
Всякий народ имеет такое правительство, какого заслуживает (Ж. Местр).

Как исключить файлы и каталоги с помощью Rsync в Linux

24.02.2019
Как исключить файлы и каталоги с помощью Rsync в Linux

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/

 

Читать  Docker/Docker Compose/Docker Run host network vs bridge network (как настроить режим моста/хоста для docker, с помощью команды run или docker compose)

Исключить несколько файлов или каталогов

Чтобы исключить несколько файлов или каталогов, просто укажите несколько параметров —exclude:

rsync -a --exclude 'file1.txt' --exclude 'dir1/*' --exclude 'dir2' src_directory/ dst_directory/

 

 

Если вы предпочитаете использовать одну опцию —exclude, вы можете перечислить файлы и каталоги, которые вы хотите исключить, в фигурных скобках, {} разделенных запятой, как показано ниже:

rsync -a --exclude={'file1.txt','dir1/*','dir2'} src_directory/ dst_directory/

 

 

Если количество файлов и  ли каталогов, которые вы хотите исключить, велико, вместо использования нескольких опций —exclude вы можете указать файлы и каталоги, которые вы хотите исключить, в файле и передать файл с опцией —exclude-from.

Команда ниже делает то же самое, что и выше:

rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/

 

exclude-file.txt:
file1.txt
dir1/*
dir2

 

Исключить несколько файлов или каталогов на основе шаблона

С 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файлы.
  • —include=’*/’- Затем мы включаем все каталоги в каталоге src_directory. Без этого rsync будет копировать только файлы *.jpg в каталоге верхнего уровня.
  • -m — Удаляет пустые каталоги.
Читать  Как преобразовать временные метки Unix в строки в Linux

Другой вариант — перенаправить вывод команды 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.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Является ли ваше новое решение устроиться на следующую работу на…

Спасибо!

Теперь редакторы в курсе.