Главная >> Инструкции >> Как копировать скрытые файлы в Linux

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

Иногда может возникнуть необходимость скопировать скрытые файлы или папки из одного места в другое. В Linux скрытые файлы характеризуются точкой (.) в начале имени файла. Типичный пример - копирование домашнего каталога пользователя или директории с веб-сайтом, так как эти каталоги часто содержат множество скрытых файлов.

При копировании одного скрытого файла всё работает без проблем. Однако сложности возникают при попытке скопировать несколько файлов с использованием шаблона *. Этот шаблон не учитывает символ точки (.), в результате чего все скрытые файлы исключаются из процесса копирования. Такое поведение было специально разработано, чтобы избежать непреднамеренной рекурсии. Рекурсия могла возникнуть если бы програма пыталась копировать скрытые ссылки на текущую директорию (.) и родительскую директорию (..).

Тем не менее, существуют способы обойти это ограничение. Можно скопировать содержимое папки без использования *. Например, давайте создадим папку app с файлами .htaccess и index.php и папку backup, куда нужно скопировать файлы. Можно использовать ссылку на текущую папку, и тогда cp скопирует всё содержимое, включая скрытые файлы, в нужную директорию:

cp -r app/. backup

В качестве альтернативы можно также явно указать, что вы хотите скопировать содержимое папки, переданной в первом параметре, используя опцию -T:

cp -rT app backup

Эта команда также требует опции -r для рекурсивной обработки папок, поскольку первый параметр указывает на папку, а не на список файлов.

Наконец, если вы хотите скопировать только скрытые файлы из директории, можно использовать следующий синтаксис с символами подстановки:

cp app/.* backup

Однако избегайте добавления опции -r к этой команде. Если её включить, команда попытается скопировать не только указанную директорию, но и все директории выше по иерархии, включая корневой каталог системы, что может привести к нежелательным последствиям.

Оставьте комментарий