Как исключить файлы и каталоги с помощью 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={'file1.txt','dir1/*','dir2'} src_directory/ dst_directory/

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

Приведенная ниже команда делает то же самое, что и предыдущая:

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

исключить-файл.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 — Удаляет пустые каталоги.

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

Связанные руководства

Источник

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

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