Паттерн, переименование пакетного файла в терминале

Не могли бы вы быть более конкретными? В SAN iSCSI обычно есть несколько контроллеров, которые делают переход на отказ прозрачным для клиентов, SAN IP просто привязан к оставшемуся контроллеру. Multipath является многолучевым, это независимая от ОС концепция, многопутевая передача Linux легко поддерживает многие сети SAN iSCSI.

https://help.ubuntu.com/12.04/serverguide/device-mapper-multipathing.html

Update 8/17/2012 Итак, в зависимости от того, как вы определили сеть, у вас может быть возможность создать избыточность путей, но сам хост хранения является одной большой точкой отказа. До тех пор, пока вы понимаете, что вы можете создать собственное решение. Однако есть некоторые препятствия.

Multipath работает над концепцией опроса путей, идентифицируя все те, которые отвечают одной и той же WWID, которая является результатом запуска scsi_id, а затем использует это для группировки правильных пути под одной картой и обеспечить соблюдение политики группировки. Поскольку эти инициаторы iscsi являются фактически виртуальными устройствами, они обычно не заходят так далеко, чтобы определить для них уникальные атрибуты. Например.

root@ubuntu02:/persistent/home/intel# sg_vpd -p di /dev/sda Device Identification VPD page: Addressed logical unit: designator type: EUI-64 based, code set: Binary 0x22f7000155affff4 designator type: vendor specific [0x0], code set: ASCII vendor specific: 0xC001IntelVD VMBOOT1 Target port: designator type: Relative target port, code set: Binary Relative target port: 0x2 designator type: Target port group, code set: Binary Target port group: 0x0

Вероятно, ничего не вернет. Если вы заметили, что в multipath.conf есть строка, называемая «getuid_callout», обычно указывающая на инструмент под названием * scsi_id *

/lib/udev/scsi_id --whitelisted /dev/sda 222f7000155affff4

getuid_callout может быть заменен всем, что вы хотите, в вашем случае вы будете необходимо определить некоторое детерминированное отображение, поэтому пути, которые вы открыли по сети, действительно указывают на одно и то же устройство. В противном случае вы просто собираете мусор везде. После этого вы можете создать базовую многоузловую группу с постоянным приоритетом.

device { vendor "FOO" product "BAR" path_grouping_policy multibus getuid_callout "your-custom-uid-script" path_selector round-robin 0 path_checker directio checker directio prio constant failback immediate }

Если вам нужна более сложная политика, вам нужно будет определить обработчик prio, который может оценивать ваши пути, после что вы можете группировать по приоритету и т. д.

Я делаю много предположений здесь, я обычно не имею дело с iSCSI, я предполагаю, что он позволит вам создавать несколько путей к одному и тому же я также предполагаю, что каждый путь экспортируется по изолированной сети, где у вас есть доступ к обоим.

Вы также можете создать основную карту многолучевого распространения вручную, все многолучевые инструменты это создание четкого интерфейса для оптимизации DMDEVICE, обеспечения проверки пути и управления путями по мере их поступления и выхода. Вы можете создать карту непосредственно с помощью dmsetup, это даже приведет к отказу, просто не очень эффективно, и вам придется самостоятельно управлять членством в пути.

https://help.ubuntu.com/12.04 /serverguide/device-mapper-multipathing.html

См. «пример цели многолучевости».

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

1
задан 19 April 2013 в 15:19

2 ответа

Это может быть сделано с небольшой магией расширения параметров bash!

for f in file_[0-9]*_*; do mv $f upl_${f#file_[0-9]*_}; done

file_[0-9]*_*; - Первый шаблон используется для прохождения через все файлы, начинающиеся с «file_anynumber_» ${f#file_[0-9]*_} - второй pattern file_[0-9]*_ используется в расширении параметра, который сообщает bash удалить «file_anynumber_» из нисходящей строки.

Для получения дополнительной информации о Parameter expansion:

man bash
5
ответ дан 24 May 2018 в 23:22
  • 1
    Обратите внимание, что в нем используются глобы, а не регулярные выражения, поэтому [0-9]* будет соответствовать одной цифре, за которой следует любая строка. Вероятно, есть лучший способ сопоставить только цифры, но я не могу придумать ничего сжатого. – wjandrea 31 October 2017 в 21:49

Если файлы находятся в папках с отдельными разделами, используйте переименование после поиска:

find -iname file_*.png -type f -exec rename -n 's/file_[0-9]{3}(.*\.png)/upl$1/' {} \;

после повторного переименования -n, чтобы удалить его, выполните! -)

например, вы связываете поиск и переименование.

Лично я использовал его для переименования заголовков источников .h в .hpp

find -iname *.h -type f -exec rename 's/(.*\.)h/$1hpp/' {} \;
3
ответ дан 24 May 2018 в 23:22

Другие вопросы по тегам:

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