Как скопировать скрытые файлы в Linux

Как скопировать скрытые файлы в 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. Шаблон .* включает . и ..; с рекурсией команда попытается уйти на уровень выше по дереву каталогов, что легко обернется дополнительными сложностями.

Эти приёмы закрывают все типичные сценарии: копирование одного файла с точкой, перенос всего содержимого каталога со скрытыми элементами и выборочная отправка только «точечных» файлов. Пользуйтесь тем вариантом, который больше подходит под ваши задачи.