Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

Linux / DevOps

Как скопировать папку целиком в Linux (cp -r) и не забыть скрытые файлы (.env)

Обновлено: 27.08.2026 · Официальная документация ↗

Почему сайт ломается после обычного копирования папки

Начинающий администратор переносит сайт или проект на сервере командой cp -r /var/www/site1/* /var/www/site2/, запускает проект, но сайт падает с фатальной ошибкой конфигурации. Причина кроется в маске *: в Linux стандартная звездочка копирует только видимые файлы, напрочь игнорируя скрытые файлы, чьи имена начинаются с точки (например, файлы окружения .env, конфиги веб-сервера .htaccess, ключи и репозитории .git).

Шпаргалка по флагам утилиты cp

КомандаЧто копируетСохранение прав и владельцев
cp file1 file2Только один одиночный файлСоздает новый файл с правами текущего пользователя
cp -r dir1 dir2Папку и подпапки (Recursive)Сбрасывает дату создания и права под текущего юзера
cp -a dir1 dir2Идеальный клон (Archive): папки, скрытые файлы, симлинки100% сохранение всех оригинальных прав, дат и владельцев

Правильные способы копирования папок со скрытыми файлами

Способ 1: Идеальное клонирование папки (команда cp -a)

Флаг -a (Archive) — самый надежный способ резервного копирования или переноса структуры папок:

sudo cp -a /var/www/my_project/. /var/www/new_project/

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

Способ 2: Стандартное рекурсивное копирование (cp -r)

Скопируем папку my_folder со всем деревом файлов в директорию /opt/backup/:

cp -rv my_folder /opt/backup/

(Флаг -v будет наглядно выводить список каждого скопированного файла в консоль).

Шаг 3: Проверка наличия скрытых файлов (.env) в новом месте

Убедитесь, что скрытые файлы скопировались успешно, используя команду ls с флагом -a (All):

ls -la /var/www/new_project/

В списке должны присутствовать файлы .env, .htaccess и служебные каталоги.

Типовые ошибки администраторов

  • Копирование симлинков как тяжелых файлов: Обычный флаг -r при обнаружении символической ссылки копирует реальный файл, на который она указывает, что может раздуть размер папки в сотни раз. Флаг -a копирует сами ярлыки ссылок без раздувания данных.
  • Забытые права владельца (chown): Если вы скопировали папку через sudo cp, все новые файлы получат владельца root:root. Веб-сервер Nginx/Apache не сможет записать туда кэш и сессии. Решение: верните права веб-пользователю: sudo chown -R www-data:www-data /var/www/new_project.
Планируете перенос терабайтов данных или миграцию сложных сервисов между серверами?
ITSTM выполнит бесшовную синхронизацию данных утилитой rsync по защищенному SSH-каналу без остановки рабочих сервисов и баз данных.
💡 Практика специалистов: При переносе рабочих веб-проектов всегда проверяйте права на исполнение скриптов в скопированной папке. Запуск команды 'chmod +x artisan' (для Laravel) или бинарников в папке bin обязателен, если копирование производилось без сохранения прав флагом -p/-a.

Частые вопросы (FAQ)

В чем разница между командами 'cp -r folder1 folder2' и 'cp -a folder1 folder2'?

Флаг -r копирует только структуру и файлы, сбрасывая владельцев и временные метки под текущего пользователя. Флаг -a (Archive) выполняет точный слепок: сохраняет права chmod, владельцев chown, симлинки и даты изменения.

Как скопировать только скрытые файлы из одной папки в другую?

Используйте шаблон dot-файлов: cp /path/src/.* /path/dest/ 2>/dev/null (перенаправление ошибок скроет предупреждения о системных ссылках '.' и '..').

Как принудительно перезаписать существующие файлы без запроса подтверждения?

Если в системе настроен алиас на 'cp -i', выполните команду через обратный слеш, чтобы проигнорировать алиас: \cp -rf src/. dest/

Какая утилита лучше всего подходит для копирования огромных директорий с прогресс-баром?

Для больших объемов данных лучше использовать утилиту rsync: rsync -avP /папка_источник/ /папка_назначение/.

Полезные материалы
Рекомендуем