Как исключить числовые каталоги с rsync?

Можно использовать 'lshw'. Установите это с помощью 'sudo склонный - получает установку lshw' на Debian и производных. Существует даже графическая версия, названная lshw-gtk.

7
06.10.2011, 02:49
5 ответов

rsync's исключает опцию, действительно не поддерживает regex, это - больше оболочки globbing сопоставление с образцом.

Если те каталоги довольно статичны, необходимо просто перечислить их в файле и использовании --exclude-from=/full/path/to/file/exclude_directories.txt.

Обновленный для обеспечения примера

Во-первых, Вы просто помещаете каталоги в файл:

find . -type d -regex '.*/[0-9]*$' -print > /tmp/rsync-dir-exlcusions.txt

или

( cat <<EOT
123414
42344523
345343
2323
EOT ) > /tmp/rsync-directory-exclusions.txt

затем можно сделать работу rsync:

rsync -avHp --exclude-from=/tmp/rsync-directory-exclusions.txt /path/to/source/ /path/to/dest/

Вам просто нужен дополнительный шаг для установки текстового файла, который содержит каталоги для исключения, 1 на строку.

Следует иметь в виду, что путь каталогов в задании, их относительный путь к тому, как rsync видит каталог.

5
27.01.2020, 20:16
  • 1
    Вы могли использовать сценарий, который использует regex для создания этого файла прежде, чем выполнить rsync –  Rory Alsop 05.10.2011, 18:57
  • 2
    Вы могли дать пример как ответ? –  cwd 05.10.2011, 21:27
  • 3
    , просто обновленный для включения примера, включая какой @RoryAlsop, предложенный объединенным, с какой thiton, предложенный ниже. –  Tim Kennedy 05.10.2011, 22:40

Вы не можете сказать “имя, которое содержит только цифры” в синтаксисе шаблона rsync. Поэтому включайте все имена, которые содержат нецифру и исключают остальных.

rsync --include='*[!0-9]*' --exclude='*/' …

См. также мое rsync руководство шаблона.

7
27.01.2020, 20:16

Используйте находят для вхождения в список каталогов, которые будут исключены, затем будут использовать rsync's - исключают - из опции, поскольку Tim Kennedy описал это.

1
27.01.2020, 20:16

Можно сделать это в одной строке:

rsync -avHp --exclude-from=<(cd /path/to/source; find . -type d -regex './[0-9]*' | sed -e 's|./||') /path/to/source/ /path/to/dest/
1
27.01.2020, 20:16

Используйте эту команду:

$> rsync -avlH --exclude=*.ibd --exclude-from=<(ls -p | grep -v / | \
   grep -E 'ibdata|ib_logfile')  /mnt/myfuse/ /u01/my3309/data/
-1
27.01.2020, 20:16

Теги

Похожие вопросы