Как скопировать скрытые файлы в Linux
В Linux скрытыми считаются файлы и каталоги, имя которых начинается с точки. Таких объектов много в домашнем каталоге и в папках с сайтами: конфигурации, служебные файлы, кеши. Иногда нужно перенести их вместе с остальными данными — и тут есть нюансы.
Один файл с точкой в имени копируется как обычно. Проблемы начинаются, когда хочется «забрать всё» шаблоном *: он по умолчанию не видит имена, начинающиеся с точкой. Это сделано специально, чтобы не задеть служебные записи . и .. и не устроить нежелательную рекурсию при копировании.
Рассмотрим основные способы копирования
Вариант №1 — ссылка на «всё содержимое» через /.
Эта команда скопирует в целевую папку и обычные, и скрытые элементы исходного каталога.
cp -r app/. backup
Ключ -r нужен для рекурсивного копирования директорий, а суффикс /. даёт понять, что речь именно о содержимом app.
Вариант №2 — копирование каталога «как есть» без вложенного уровня
В результате следующей команды backup станет копией app, а не backup/app.
cp -rT app backup
Флаг -T указывает трактовать backup как целевой объект, а не как каталог-назначение для «вложенного» копирования; -r — для работы с папками.
Вариант №3 — если нужны только скрытые файлы
В этом случае можно явно обратиться к шаблону «точечных» имён:
cp app/.* backup
Важно: не добавляйте сюда -r. Шаблон .* включает . и ..; с рекурсией команда попытается уйти на уровень выше по дереву каталогов, что легко обернется дополнительными сложностями.
Эти приёмы закрывают все типичные сценарии: копирование одного файла с точкой, перенос всего содержимого каталога со скрытыми элементами и выборочная отправка только «точечных» файлов. Пользуйтесь тем вариантом, который больше подходит под ваши задачи.