Android

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

whatsaper ru Недетские анекдоты про Вовочку

whatsaper ru Недетские анекдоты про Вовочку

Оглавление:

Anonim

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

С Rsync вы можете зеркалировать данные, создавать инкрементные резервные копии и копировать файлы между системами. При копировании данных вы можете исключить один или несколько файлов или каталогов на основе их имени или местоположения.

В этом уроке мы покажем вам, как исключить файлы и каталоги с помощью rsync.

Прежде чем вы начнете

Вы должны иметь базовые знания о том, как работает rsync.

В приведенных ниже примерах мы будем использовать rsync с опцией -a ,. Это говорит rsync о рекурсивной синхронизации каталогов, передаче специальных и блочных устройств и сохранении символических ссылок, времени модификации, группы, владельца и прав доступа.

При исключении файлов или каталогов вам необходимо использовать их относительные пути к исходному каталогу.

Существует два варианта указания файлов и каталогов, которые вы хотите исключить:

  • Из командной строки, используя --exclude --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/

rsync -a --exclude 'dir1/*' src_directory/ dst_directory/

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

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

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

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/ исключить-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 все файлы .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 терминал