Не уверен, что это правильное место для публикации (если нет, извините)

Из-за некоторых ограничений (и предпочтений) я нахожусь в тупике. На машине установлен ProxmoxVE (гипервизор на основе Debian/QEMU).

Проблема в том, что Proxmox не проверяет внутри подкаталогов файлы .iso (необходимые для развертывания виртуальных машин), и я не могу изменить структуру хранилища файлов.

Я пытаюсь выяснить, как автоматически генерировать символические ссылки на основе расширения файла. Моя идея состоит в том, чтобы иметь один каталог с динамическими сопоставлениями для каждого файла .iso, чтобы я мог легко добавлять / удалять их.

Пример структуры файла:

Folder A
 -Folder B
   -ISO A
 -Folder C
   -ISO B
   -ISO C
 -ISO D

Требуемая файловая структура:

Folder A
 -ISO A
 -ISO B
 -ISO C
 -ISO D

Я могу запускать сценарии по мере необходимости, но не обладаю знаниями для написания указанного сценария.

Любая помощь будет принята с благодарностью!

Изменить 1: у меня есть другая папка, я планирую хранить все символические ссылки в

1 ответ1

0

Это можно сделать в виде одной строки следующим образом:

find "/path/to/FolderA" -type f -name "*iso" -exec  ln -s {} /path/to/symlinkfiles \;

Чтобы превратить это в сценарий

#!/bin/bash
SOURCEFILES="/path/to/folderA"
FLATTENEDFILEDIR="/path/to/folderB"

find "$SOURCEFILES" -type f -name "*.iso -exec ln -s {} $FLATTENEDFILEDIR \;

Они работают следующим образом: команда find ищет файлы в заданном месте, "тип f" означает, что она ищет только файлы, поэтому символические ссылки и подкаталоги не выполняются (но каталоги ищутся для файлов), * .iso ожидает, что это расширение файла.

Вторая часть (после -exec) выполняется для каждого файла и создает символическую ссылку.

Возможно, вы захотите добавить что-то вроде «rm -r $ FLATTENEDFILESDIR/*» вверху этого скрипта, если допустимо удалить существующие символические ссылки, поэтому вы не попадете на мертвые - НО ЭТО ВАЖНО, ВЫ УСТАНОВИЛИ FLATTENEDFILESDIR Во-первых, правильно, так как невозможность сделать это может стереть большую часть вашей системы!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .