Скопировать Несколько Папок с Подобной Структурой каталогов и Поддержать Структуру в Новом Месте

Надеющийся делать что-то, что, вероятно, довольно просто ниже, является структурой каталогов:

/home/user/app-data/Unique container ID/path/to/files

я попробовал:

cp -r /home/user/app-data/*/path/to/files /storage/location

, Очевидно, это захватывает все файлы, которые я хочу, которые являются в самом конце целевого местоположения. Я хочу скопировать ту заключительную папку в каждой из уникальных структур каталогов к местоположению сохранения и поддержать структуру каталогов от уникального идентификатора вперед. Таким образом, мой продукт места хранения конца для каждой из захваченных папок был бы похож:

/storage/location/Unique ID grabbed by the wildcard/path/to/files
1
задан 18 March 2021 в 15:10

2 ответа

Попробуйте:

for f in */path/to/files
  do
    d="${f%/*}"
    d="/path/to/files/storage/location/$d/"
    mkdir -p "$d"
    echo cp -r "$f" "$d"
  done
  • Сначала , изменить / путь / к / файлы , чтобы отразить фактический путь источника, который вы хотите в Уникальный контейнер ID каталоги и оставьте * перед ним.

  • Далее , изменить / путь / к / файлы / хранилище / местоположение с фактическим пухом назначения, где вы хотите скопировать свои файлы и оставить / после него.

  • Затем , CD - / Home / User / Praps-data .

  • После этого запустите вышеуказанный код для сухого прогона.

  • Наконец , удалить ECHO при выполнении результатов, чтобы сделать фактическое копирование.

0
ответ дан 18 March 2021 в 23:25

CP копирует лист источника (последняя часть пути), а в вашем случае * совпадает с одним или несколькими объектами листьев. Даже если -R -R будет скопировать каталоги рекурсивно, возможно, лучше использовать -A вместо этого для сохранения всех атрибутов.

cp -r /home/user/app-data/* /storage/location

Если вам нужно больше расширенных вариантов фильтра, вы можете воспользоваться найти и CPIO в комбинации.

В этом примере мы просто копируем структуру каталогов:

find /home/user/app-data \
  -type d -links 2 -printf %P\\0 | \
   cpio -0 -pvdmu -D /home/user/app-data -- /storage/location

(тот факт, каталог без подкаталогов имеет только две жесткие ссылки . , .. Мы можем использовать Из -Links 2 Чтобы получить все окончательные каталоги, в любом случае, как вы построите свой фильтр, наиболее важным является Найти и CPIO имеет одинаковую начальную точку).

1
ответ дан 18 March 2021 в 23:25

Другие вопросы по тегам:

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