Я думаю, что это поможет:
cd demo
find . -not -path \*/.\* -type d -exec mkdir -p -- ../demo_bkp/{} \;
find . -not -path \*/.\* -type f -exec cp -- {} ../demo_bkp/{} \;
Сначала находит и создает каждый каталог.Затем находит и копирует каждый файл.
Обратите внимание, что он не будет работать со специальными файлами (символическими ссылками и т. Д.).