Бывают ситуации когда необходимо скопировать выборочные файлы вместе со всей структурой каталогов.
В данной ситуации одним cp -a не обойтись - ибо он копирует все подряд.
На помощь приходит комманда cpio! :)
Простой пример:
cpio создает полные пути, как они ему и пришли на вход.
Т.е. если вы на вход подаете /aaa/bbb/ccc, то в результате получите /dest_path/aaa/bbb/ccc.
По-этому используйте относительные пути (начинаются с символа точки . ), а не абсолютные.
К примеру, в ситуации когда вы разрабатываете свой дистрибутив (который, к примеру, лежит у вас по адресу /home/user/my_dist) и нужно скопировать часть файлов в другую папку с сохранением всей структуры каталогов (к примеру в /home/user/new_dist) - перейдите в папку /home/user/my_dist и выполняйте выше приведенную команду от туда, чтобы оперировали с относительными путями.
В скриптах же, где чаще всего используются абсолютные пути, можно использовать под-оболочку: