Это, безусловно, возможно , так или иначе.
Я делаю это с файлом образа, двумя слоями файловой системы (ZFS )и одним слоем dm -crypt. Установку легко описать. :Поместите моментальный снимок -и транзакционную -устойчивую файловую систему в файл образа, поместите новый файл образа в эту файловую систему. Создайте зашифрованное блочное устройство этого файла с помощью cryptsetup. Создайте новую файловую систему на этом блочном устройстве и смонтируйте ее в удобном месте.
Теперь можно сделать моментальный снимок незашифрованной файловой системы и сохранить файл образа с зашифрованной файловой системой из этого моментального снимка.
Файловые системы должны быть -устойчивыми к транзакциям на случай, если моментальный снимок будет сделан в неудобное время. Незавершенные транзакции будут проигнорированы, и в результате должна получиться непротиворечивая версия файлов. Тем не менее, есть некоторые технические сложности с упорядочением, если обновляется несколько файлов (, которые я не могу объяснить ), поэтому база данных может быть расстроена результатом. Я думаю, что nilfs2 имеет параметр конфигурации для использования строгой синхронизации в этом случае, если это важно.
На практике существует множество сложных и -склонных к сбоям шагов по установке и удалению этого, поэтому рекомендуется использовать сложные и -устойчивые к сбоям сценарии с надлежащим тестированием того, что уже сделано/отменено. Я использую zfs, потому что он прост в управлении и упрощает эту задачу.
Ваша вторая попытка "сработает", если вы удалите посторонние цитаты:
for i in $(cat fileA); do awk -v i="$i" '$2==i' fileB; done # but don't do this
Однако, если вы решили использовать цикл оболочки, лучше использоватьwhile
:
while IFS= read -r i; do awk -v i="$i" '$2==i' fileB; done < fileA # don't do this either
Лучше было бы вообще избегать цикла оболочки:
awk 'NR==FNR{a[$1]; next} $2 in a' fileA fileB
См. также: