Контрольная сумма двоичных изменений после rsync -на удаленную машину

$ sed 's/-[[:alnum:]]*-[[:alnum:]]*$//' file
bucket,abc-def-ghi
bucket,dde-wwq-ooi
instance,jkl-mno-1-zzz
disk,pqr-stu-10-kuy

Здесь используется sedдля сопоставления двух последних подстрок, разделенных тире -в каждой строке, и их удаления. [[:alnum:]]будет соответствовать любому буквенно-цифровому символу.

Вы можете сократить его до

sed 's/\(-[[:alnum:]]*\)\{2\}$//' file

т. е. сопоставить и удалить два набора -[[:alnum:]]*в конце каждой строки.

В GNU awkвы также можете

$ awk -F '-' 'BEGIN { OFS=FS } { NF -= 2; print }' file
bucket,abc-def-ghi
bucket,dde-wwq-ooi
instance,jkl-mno-1-zzz
disk,pqr-stu-10-kuy

но такое изменение NFне является переносимым, и его следует избегать (нет гарантии, что это изменит текущую запись ). Например, это не будет работать с BSD awk.

В стандарте awk, не прибегая к использованию sub()(, которое будет просто имитировать sed), вам придется воссоздать текущую запись из полей, которые вы хотели бы использовать (в нашем случае., все поля, кроме двух последних дефисов -, разделены):

$ awk -F '-' 'BEGIN { OFS=FS } { nf = split($0,a) - 2; $0=""; for (i=1; i<=nf; ++i) $i = a[i]; print }' file
bucket,abc-def-ghi
bucket,dde-wwq-ooi
instance,jkl-mno-1-zzz
disk,pqr-stu-10-kuy
3
20.01.2021, 22:29
1 ответ

На самом деле это была проблема с файловой системой, о чем свидетельствуют различные страшные журналы.

$ dmesg
[1651808.506316] Buffer I/O error on device dm-13, logical block 3178496
[1651808.523043] EXT4-fs warning (device dm-13): ext4_end_bio:323: I/O error 3 writing to inode 140391 (offset 1652555776 size 4096 starting block 3178496)
[1651808.523045] Buffer I/O error on device dm-13, logical block 3178496
[1651808.539230] EXT4-fs warning (device dm-13): ext4_end_bio:323: I/O error 3 writing to inode 140391 (offset 1652555776 size 4096 starting block 3178496)
[1651808.539232] Buffer I/O error on device dm-13, logical block 3178496
[1651808.554126] EXT4-fs warning (device dm-13): ext4_end_bio:323: I/O error 3 writing to inode 140391 (offset 1652555776 size 4096 starting block 3178496)
[1651808.554128] Buffer I/O error on device dm-13, logical block 3178496
[1651808.570012] EXT4-fs warning (device dm-13): ext4_end_bio:323: I/O error 3 writing to inode 140391 (offset 1652555776 size 4096 starting block 3178496)
[1651808.570053] Buffer I/O error on device dm-13, logical block 3178496
[1651808.588767] EXT4-fs warning (device dm-13): ext4_end_bio:323: I/O error 3 writing to inode 140391 (offset 1652555776 size 4096 starting block 3178496)
[1651808.588809] Buffer I/O error on device dm-13, logical block 3178496

При дальнейшем осмотре оказалось, что диск был просто переполнен, ох:)

А также полезность, команда, которая, наконец, показала, что что-то действительно не так (, кроме прямой проверки файла)

rsync -avv --checksum vray-benchmark-5.00.01 joshuao:
0
18.03.2021, 22:36

Теги

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