Я предполагаю, что вы спрашиваете: «Почему DIRNAME/
соответствует расширенному регулярному выражению \<[A-Z]+\>
, хотя в нем есть символ, который не является заглавной буквой (/
)?».
Ваше регулярное выражение соответствует всему, что содержит слово , написанное в верхнем регистре:
$ printf '%s\n' "this is not matched" "this IS matched" | egrep "\<[A-Z]+\>"
this IS matched
\<
и \>
соответствуют нулевой -ширине «границы слова», т. е. пробелу между «символом слова» и символом другого типа (или началом/концом слова. строка ). Словесный символ — это любой символ из класса[[:alpha:]_]
(букв и подчеркивания ).
Ваше выражение соответствует чему-то вроде DIRNAME/
, так как DIRNAME
соответствует выражению (, перед D
и послеE
)есть граница слова.
Чтобы отфильтровать определенные имена из списка каталогов, не используйте grep
или другие средства работы с текстом на основе строки -. Имена файлов могут содержать символы новой строки, поэтому инструментам на основе строки -будет трудно делать правильные вещи, если вы не наложите ограничения на имена файлов.
Вместо этого, чтобы получить все имена в верхнем регистре в каталоге вbash
:
$ ls -p -d *
DIR/ FILE TEST123 dir/ file test123
$ ls -p -d !(*[[:lower:]]*)
DIR/ FILE TEST123
Для этого требуется shopt -s extglob
для включения расширенных шаблонов подстановки.Расширенный шаблон подстановки !(*[[:lower:]]*)
соответствует всему, что не содержит строчных букв.
Обратите внимание, что шаблон не учитывает /
, который ls -p
добавляет к именам каталогов. Это связано с тем, что шаблон соответствует именам файлов, и нет имени файла, содержащего символ /
. Кроме того, шаблон расширяется перед вызовом ls
.
Если вы хотите дополнительно отсеять имена, содержащие цифры, используйте
$ ls -p -d !(*[[:lower:][:digit:]]*)
DIR/ FILE
(это исключает любое имя, которое содержит хотя бы одну строчную букву или цифру )или,
$ ls -p -d !(*[[:lower:]]*|*[[:digit:]]*)
DIR/ FILE
(это исключает любое имя, содержащее хотя бы одну строчную букву, а также исключает любое имя, содержащее хотя бы одну цифру ).
НАДЕЮСЬ, ЭТОТ ТЕСТ БУДЕТ ПОЛЕЗЕН КОМУ-ТО В БУДУЩЕМ.
root@Tiburon3:~# pvscan
PV /dev/mapper/luks_sda VG bck_vg lvm2 [<232.87 GiB / 0 free]
PV /dev/mapper/luks_sdb VG bck_vg lvm2 [<931.50 GiB / 0 free]
PV /dev/mapper/luks_sdc VG bck_vg lvm2 [<1.82 TiB / 0 free]
PV /dev/mapper/luks_sdd VG bck_vg lvm2 [149.03 GiB / 0 free]
PV /dev/mapper/luks_sde VG bck_vg lvm2 [<1.82 TiB / 0 free]
PV /dev/mapper/luks_sdf VG bck_vg lvm2 [<1.82 TiB / 0 free]
PV /dev/mapper/luks_sdg VG bck_vg lvm2 [<931.50 GiB / 0 free]
PV /dev/mapper/luks_sdh VG bck_vg lvm2 [149.03 GiB / 79.83 GiB free]
PV /dev/mapper/sdb5_crypt VG Tiburon3-vg lvm2 [<148.53 GiB / <111.28 GiB free]
Total: 9 [7.94 TiB] / in use: 9 [7.94 TiB] / in no VG: 0 [0 ]
root@Tiburon3:~# df -hP /tiburon_backup/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/bck_vg-lv_tib_bck 7.7T 93M 7.3T 1% /tiburon_backup
#ЗАПОЛНЕНИЕ ФС фиктивными данными для достижения конца VG:
cd /tiburon_backup/
FROMHERE=848
for ((i=FROMHERE; i>=1; i--))
do
fallocate -l 10GB gentoo_root$i.img
done
root@Tiburon3:/tiburon_backup# df -hP /tiburon_backup/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/bck_vg-lv_tib_bck 7.7T 7.3T 20G 100% /tiburon_backup
fallocate -l 10G gentoo_root000.img
root@Tiburon3:/tiburon_backup# pvscan
PV /dev/mapper/luks_sda VG bck_vg lvm2 [<232.87 GiB / 0 free]
PV /dev/mapper/luks_sdb VG bck_vg lvm2 [<931.50 GiB / 0 free]
PV /dev/mapper/luks_sdc VG bck_vg lvm2 [<1.82 TiB / 0 free]
PV /dev/mapper/luks_sdd VG bck_vg lvm2 [149.03 GiB / 0 free]
PV /dev/mapper/luks_sde VG bck_vg lvm2 [<1.82 TiB / 0 free]
PV /dev/mapper/luks_sdf VG bck_vg lvm2 [<1.82 TiB / 0 free]
PV /dev/mapper/luks_sdg VG bck_vg lvm2 [<931.50 GiB / 0 free]
PV /dev/mapper/luks_sdh VG bck_vg lvm2 [149.03 GiB / 79.83 GiB free]
rm -f gentoo_root[1-9]*
root@Tiburon3:/tiburon_backup# df -hP.
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/bck_vg-lv_tib_bck 7.7T 10G 7.3T 1% /tiburon_backup
root@Tiburon3:/tiburon_backup# du -sh *
10G gentoo_root000.img
root@Tiburon3:/#
btrfs filesystem resize -1T /tiburon_backup
Output:
Resize '/tiburon_backup' of '-1T'
Обратите внимание, это заняло довольно много времени по сравнению с изменением размера пустой fs.
Интересно, мог ли я использовать какой-нибудь --прогресс или --подробный параметр, чтобы увидеть больше вывода.
root@Tiburon3:/tiburon_backup# df -hP.
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/bck_vg-lv_tib_bck 6.8T 12G 6.8T 1% /tiburon_backup
umount /tiburon_backup
root@Tiburon3:/# pvscan
PV /dev/mapper/luks_sda VG bck_vg lvm2 [<232.87 GiB / <232.87 GiB free]
PV /dev/mapper/luks_sdb VG bck_vg lvm2 [<931.50 GiB / <931.50 GiB free]
PV /dev/mapper/luks_sdc VG bck_vg lvm2 [<1.82 TiB / 0 free]
PV /dev/mapper/luks_sdd VG bck_vg lvm2 [149.03 GiB / 149.03 GiB free]
PV /dev/mapper/luks_sde VG bck_vg lvm2 [<1.82 TiB / 0 free]
PV /dev/mapper/luks_sdf VG bck_vg lvm2 [<1.82 TiB / 469.00 GiB free]
PV /dev/mapper/luks_sdg VG bck_vg lvm2 [<931.50 GiB / <931.50 GiB free]
PV /dev/mapper/luks_sdh VG bck_vg lvm2 [149.03 GiB / 149.03 GiB free] #Lets remove this one, for testing purposes, smallest size
PV /dev/mapper/sdb5_crypt VG Tiburon3-vg lvm2 [<148.53 GiB / <111.28 GiB free]
Total: 9 [7.94 TiB] / in use: 9 [7.94 TiB] / in no VG: 0 [0 ]
root@Tiburon3:/# pvdisplay /dev/mapper/luks_sdh
--- Physical volume ---
PV Name /dev/mapper/luks_sdh
VG Name bck_vg
PV Size 149.03 GiB / not usable <3.84 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 38152
Free PE 20437
Allocated PE 17715 **#allright!, this is the scenario I wanted to test. Data migration before removing the disk.**
PV UUID VRhdHD-5aam-9Wha-Qzwg-f8Iz-hosM-Wz0Q3q
root@Tiburon3:/# pvmove /dev/mapper/luks_sdh
No extents available for allocation.
#На всякий случай я уменьшу LV не на полный 1 ТБ, а на 800 ГБ, этого должно быть достаточно, чтобы переместить оставшиеся выделенные PE из luks _sdh...
root@Tiburon3:/# lvreduce -L -800G /dev/mapper/bck_vg-lv_tib_bck
WARNING: Reducing active logical volume to <6.94 TiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce bck_vg/lv_tib_bck? [y/n]: y
Size of logical volume bck_vg/lv_tib_bck changed from <7.72 TiB (2023191 extents) to <6.94 TiB (1818391 extents).
Logical volume bck_vg/lv_tib_bck successfully resized.
root@Tiburon3:/# pvmove /dev/mapper/luks_sdh --alloc anywhere
/dev/mapper/luks_sdh: Moved: 0.06%
[...]
/dev/mapper/luks_sdh: Moved: 82.00%
[...]
/dev/mapper/luks_sdh: Moved: 99.99%
Done!
root@Tiburon3:/# pvdisplay /dev/mapper/luks_sdh
--- Physical volume ---
PV Name /dev/mapper/luks_sdh
VG Name bck_vg
PV Size 149.03 GiB / not usable <3.84 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 38152
Free PE 38152
Allocated PE 0 **#DATA WAS MOVED OUT OF THIS PV!**
PV UUID VRhdHD-5aam-9Wha-Qzwg-f8Iz-hosM-Wz0Q3q
root@Tiburon3:/# vgreduce bck_vg /dev/mapper/luks_sdh
Removed "/dev/mapper/luks_sdh" from volume group "bck_vg"
root@Tiburon3:/# mount -a
root@Tiburon3:/# cd /tiburon_backup/
root@Tiburon3:/tiburon_backup# du -sh *
10G gentoo_root000.img **#DATA IS INTACT**
Сейчас:
cryptsetup закрыть luks _sdh
Теперь, как было предложено telcoM выше, целесообразно удалить (или закомментировать )luks _sdh из /etc/crypttab и обновите initramfs:
обновление -initramfs -uv
И перезагрузите , чтобы проверить, что он работает должным образом.
Теперь я запущу это на моем Private Prod Env ;)
@telcoM, большое спасибо за ваши предложения!