Смонтировать папку tmpfs при запуске (изменчивая) с созданной подпапкой

Поскольку файлы должны располагаться в разных каталогах, вам нужно запустить mvнесколько раз, по крайней мере один раз для каждого целевого каталога. Вы можете сделать это, запустив mvв цикле for .

for x in /root/*
do
  mv -i "$x"/*/*/*/* "$x"
done

Тело цикла (команда mv)выполняется для каждой записи в каталоге /rootпо очереди. При каждом выполнении тела цикла "$x"заменяется путем /root/subN.Команда mv -i "$x"/*/*/*/* "$x"перемещает файл типа /root/sub1/aaaa/bbbb/cccc/ddddв каталог /root/sub1, т.е. файл перемещается в /root/sub1/dddd.

С опцией -i, mvспросит, существует ли файл назначения, что может произойти, если у вас есть, например. как /root/sub1/aaa1/bbb/ccc/ddd, так и /root/sub1/aaa2/bbb/ccc/ddd.

3
29.11.2019, 15:23
2 ответа

Изучив systemd, я наткнулся на приятное открытие. Оказывается, нет необходимости создавать специальный сервис для решения этой проблемы, так как systemd уже предоставляет решение(systemd-tmpfiles)для этой цели. Это структурированный и настраиваемый метод управления временными каталогами и файлами.

https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles.htmlhttps://www.freedesktop.org/software/systemd/man/tmpfiles.d.html

Просто создайте файл /etc/tmpfiles.d/volatile-subfolder.confс этим содержимым:

d       /var/volatile/subfolder 0755 root root - -

И перезагрузиться.

2
27.01.2020, 21:24

Один из способов решить эту проблему — создать новую службу systemd (или изменить существующую )для управления созданием этого каталога в ваших /var/volatiletempfs с помощью директивы модуля After=local-fs.target.

[Unit]
Description=Tempfs initialize
After=local-fs.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=mkdir -p /var/volatile/subfolder


[Install]
WantedBy=multiuser.target

Добавьте это к /etc/systemd/system/tmpfsinitи затем выполните обычное systemctl daemon-reload && systemctl enable tempfsinit.

В качестве альтернативы, если у вас уже есть пользовательская служба systemd, вы также можете добавить директиву модуля Afterи команду для создания нужного подкаталога в команду ExecStartPre.

2
27.01.2020, 21:24

Теги

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