Проблема в том, что файловая система оверлея не поддерживает переименование файлов.
Существует конфигурация ядра CONFIG _OVERLAY _FS _REDIRECT _DIR, которая включает эту функцию и доступна для версии ядра выше 4.10, но наша версия ядра Linux — 3.9; Так что это не наш вариант.
Другой подход состоит в том, чтобы изменить путь по умолчанию в /etc/libuser.conf для теневых и пользовательских файлов на каталог для чтения/записи вместо /etc и скопировать туда файлы.
Таким образом, все изменения и переименования выполняются в каталоге для чтения/записи, и этот путь указывается как верхний каталог для команды монтирования оверлея.
mount -t overlay overlay -o lowerdir=/etc,upperdir=/data/etc,workdir=/data/overlayfs_workdir /etc
Если предположить, что:
Этот код bash сделает это:
#!/bin/bash
str='mail._domaikey IN TXT ( "v=DKIM1; k=rsa; t=s; s=email; "
"p=MBIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AEIIBCgKCAQEAxZfSF9WkStkz1A0tbSNWAEdyHiWfenEeihvzVn8mCOx7nsUBYnEDocbDb8P0pTHS8MVNZ4jhXSwkg5mc6+NVgyZIctSogUMdD1ddGsYDfUHgT/d5tsVTzecgRtTtpdxibRyh1HY5Zmg2wxFLuCPqMPVeJHjwfKwwQHHCQtIVH+b+QvmF6hxODu73UwNUaG1cr8UkLqoQexTGoS"
"qqmGCYGKk5ImzSIoa40L1gpcSPtIWbsVTSXK1FLsovGHd7NMmEHBgv2WabpDL4BQeEfSZC0Rk5sZEaWrepiHBiTcNjhb5tyLkgxmUIW21sOA+2kmChQUwyp10qDaP5h/+s7R0arQIDAQAB" ) ; ----- DKIM key mail for domain.com'
reg='(^[^(]*\()([^)]*)(\).*)$' # split the text into parts
[[ "$str" =~ $reg ]] && a=("${BASH_REMATCH[@]:1}") # capture in var `a` only the
# regex capture parentheses.
a[1]="${a[1]//[\"$' \n\t']}" # remove double quotes (")
# space, tab and newlines
a[1]="${a[1]//;/; }" # add some spaces back.
printf '%s "%s" %s\n' "${a[@]}" # print parts formatted.
cat input.txt | tr -d '\n\r\t\"' > output.txt
Это должно работать нормально.