TGViewer
NetworkAdmin.ru NetworkAdmin.ru @networkadminru · 4.7K subscribers
Post #646 2.24K
🌟 Подводные камни при копировании файлов в linux

На первый взгляд, копирование файлов в linux выглядит элементарной задачей. Но если копать глубже, у команды cp есть несколько нюансов, которые легко могут привести к неожиданному результату.

▪️ Базовый пример. Хочется скопировать содержимое одной директории в другую:


cp /dir_a/* /dir_b


Кажется логичным, но так скопируются только файлы верхнего уровня, без вложенных директорий. Чтобы взять все целиком (с поддиректориями и атрибутами), используем:


cp -a /dir_a/* /dir_b


Ключ -a = рекурсия + права доступа + даты + симлинки. В общем, максимально правильное копирование.

▪️ Подводные камни

Звездочка раскрывается в bash. Символ * обрабатывает сама оболочка, а не cp. То есть bash разворачивает список файлов и передаёт их в виде длинной команды:


cp -a /dir_a/file1 /dir_a/file2 ... /dir_b


Если файлов слишком много - можно упереться в ограничение длины команды.

Скрытые файлы теряются. Файлы, начинающиеся с точки (.htaccess, .env и т.п.), по умолчанию не попадут в *. В результате копирование окажется не точным.

Пустая директория = ошибка. Если в исходной папке нет файлов, то * не развернётся, и cp просто вернет ошибку.

▪️ Как сделать правильно. Лучше вообще избегать *, когда речь о копировании директорий. Надежный способ:


cp -aT /dir_a /dir_b


Здесь:

-a - копирование со всеми атрибутами
-T - воспринимать /dir_b как саму директорию назначения, а не поддиректорию внутри неё

Таким образом, копирование отрабатывает корректно: и вложенные каталоги, и скрытые файлы будут на месте.

#linux #cp

🧑‍💻 NetworkAdmin
  • 👍 25
  • ❤ 2
  • 🔥 1
  • 😱 1
  • 👌 1
More from @networkadminru
  1. Oct 1, 2026✨ Systemd-команды, которые быстро дают информацию о системе У systemd есть несколько коман…
  2. Oct 1, 2026CENTI CONF: DevOps Day — митап по разработке и инженерным решениям ⚡️ 6 ноября Centicore G…
  3. Sep 30, 2026🖥 Get-ADUser: полезные примеры для работы с пользователями Active Directory Get-ADUser -…
  4. Sep 30, 2026👁‍🗨 Хочешь разбираться в информационной безопасности, а не просто копировать чужие коман…
  5. Sep 29, 2026🥱 Как быстро разобраться с дисками и маунтами Когда на сервере несколько дисков, LVM, отд…
  6. Sep 28, 2026🔎 TCP keepalive: как находить мертвые соединения до того, как они создадут проблему Иногд…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →