Как скопировать все папки и вложенные -папки в каталог, не копируя файлы из каталога в другую папку в вашей системе

Подробнее о проблеме с github

https://github.com/systemd/systemd/issues/7105#issuecomment-467491778

Используйте флаг --kill-signal

[Service]
ExecStart=/usr/bin/systemd-nspawn --keep-unit --kill-signal=SIGTERM -M Fedora-Cloud-Base-30-1.2.x86_64 python3 -u /root/app.py
SyslogIdentifier=%N

перезагрузить systemd, запустить app.service и остановить app.service

systemctl daemon-reload
systemctl start app.service
systemctl stop app.service

Просмотр журналов

Aug 23 17:51:32 srv0 systemd[1]: Started app.service.
Aug 23 17:51:32 srv0 app[12994]: Spawning container Fedora-Cloud-Base-30-1.2.x86_64 on /var/lib/machines/Fedora-Cloud-Base-30-1.2.x86_64.raw.
Aug 23 17:51:32 srv0 app[12994]: Press ^] three times within 1s to kill container.
Aug 23 17:51:32 srv0 app[12994]: Failed to create directory /tmp/nspawn-root-71uVxm/sys/fs/selinux: Read-only file system
Aug 23 17:51:32 srv0 app[12994]: Failed to create directory /tmp/nspawn-root-71uVxm/sys/fs/selinux: Read-only file system
Aug 23 17:51:32 srv0 app[12994]: pid 1
Aug 23 17:51:35 srv0 app[12994]: Trying to halt container. Send SIGTERM again to trigger immediate termination.
Aug 23 17:51:35 srv0 app[12994]: received signal 15
Aug 23 17:51:35 srv0 app[12994]: exiting...
Aug 23 17:51:35 srv0 systemd[1]: Stopping app.service...
Aug 23 17:51:35 srv0 app[12994]: Container Fedora-Cloud-Base-30-1.2.x86_64 exited successfully.
Aug 23 17:51:35 srv0 systemd[1]: Stopped app.service.
Aug 23 17:51:35 srv0 systemd[1]: Stopped app.service.

Посмотрите, как SIGTERM передается в app.py!

0
04.10.2021, 22:37
2 ответа

mtreeхороший инструмент для этого:

$ mkdir ~/newDir
$ mtree -cdp ~/Downloads | mtree -Up ~/newDir

Первый вызовmtreecсоздает спецификацию, ссылающуюся только на dкаталоги относительно path ~/Downloads. Этот вывод передается второму вызову mtree, который Uустанавливает относительные пути к каталогам в ~/newDir. Более конкретно, в данном случае «обновления» означают создание любых отсутствующих записей. Поскольку спецификация, созданная из ~/Downloads, содержит только каталоги, создается только структура каталогов.

1
05.10.2021, 00:06

rsync и mtreeвеликолепны! К сожалению, они не всегда доступны. Немного более портативный способ сделать это будет что-то вроде:

(cd ~/Downloads && find. -mindepth 1 -type d -print0) | (cd target_dir; xargs -0 mkdir -p)
1
05.10.2021, 00:34

Теги

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