Команда cp с ключом -r рекурсивно копирует каталоги, но что делать когда в каталоге есть вложенные скрытые каталоги/файлы? Например такие как .git или .htaccess
В данном случае они не скопируются в каталог dir2
cp -r dir1/* dir2/
Чтобы понять наглядно что нужно сделать и как это работает «изнутри» перейдем в каталог dir1 и наберем команду find без аргументов
cd dir1/ find
и мы увидим, что де факто абсолютно все файлы и каталоги(в том числе не скрытые) начинаются с точки, затем слеш и лишь затем относительный путь файла/каталога. Т.е. увидим полное содержимое каталога!
. ./.git ./.git/hooks ............ прочие файлы ./.git ./index.php ./include ./include/config.php ./classes ./classes/user.class.php ./classes/get.class.php ./LICENSE ./.htaccess ./README.md ./tpl ./tpl/404.php ./api ./api/sign.php
Это именно то, что нам нужно указать в команде рекурсивного копирования всех файлов:
cp -r dir1/. dir2/