$ sed 's/REAL\([^(].*::\)/REAL(kind=r8)\1/' file
var= (var1*REAL(j)-var2*REAL(j)*var3)
REAL(kind=r8) :: pwr10
INTRINSIC REAL
REAL(kind=r16) :: qr(n), qaorg, qx
REAL(kind=r8), DIMENSION(-1:nx, -1:ny) :: arg1
REAL(kind=r8) :: y3
La expresión sed
s/REAL\([^(].*::\)/REAL(kind=r8)\1/
sustituirá todo REAL
por REAL(kind=r8)
siempre que
REAL
no va seguida inmediatamente de (
. ::
en algún lugar más adelante en la misma línea. De la forma en que lo he escrito, la cadena REAL
puede aparecer en cualquier lugar de la línea. Use ^REAL
en lugar del primero REAL
en la expresión si la palabra aparece primero en la línea (sin espacios ni nada entre el comienzo de la línea y la palabra ).
Да, это так. См. этот простой пример (, протестированный на ZoL 0.8.3 ).
Если вы хотите использовать необработанный ключевой файл (вместо парольной фразы):
dd if=/dev/urandom of=/path/to/keyfile bs=32 count=1
chmod 000 /path/to/keyfile
Сначала создайте снимок:
zfs snapshot -r tank/home@transfer
Затем, как предложено,send | recv
(с опцией репликации -R
), но укажите свои опции шифрования на принимающей стороне:
zfs send -R tank/home@transfer |
zfs receive \
-o encryption=aes-256-gcm \
-o keyformat=raw \
-o keylocation=file:///path/to/keyfile \
tank/newhome
Если смонтирован исходный набор данных, новый сразу не поставится:
cannot mount '/tank/home': directory is not empty
Уничтожьте незашифрованный набор данных и замените его новым:
zfs destroy -r tank/home
zfs rename tank/newhome tank/home
Если в вашем наборе данных нет дочерних элементов, монтировать их просто:
zfs mount tank/home
иначе
zfs list -rH -o name tank/home | xargs -L 1 zfs mount
(или просто zfs mount -a
, если у вас нет других наборов данных, которые не следует монтировать ).
Вот и все!
Наконец, уничтожьте снимок, если хотите:
zfs destroy -r tank/home@transfer