Скопировать директорию linux рекурсивно

Содержание
  1. Скопировать директорию linux рекурсивно
  2. Команда cp
  3. Описание команды cp
  4. Синтаксис
  5. Опции
  6. Примеры использования команды cp
  7. Скопировать файл в другую директорию
  8. Скопировать несколько файлов
  9. Скопировать файл с подтверждением
  10. Показать информацию о копируемых файлах
  11. Скопировать директорию
  12. Скопировать только если файлы новее
  13. Не перезаписывать существующие файлы
  14. Скопировать только атрибуты
  15. Создать резервную копию для результирующих файлов, если они существуют
  16. Принудительно перезаписывать существующие файлы назначения
  17. 🎯 Как копировать (и вставлять) файлы и каталоги из командной строки Linux
  18. Скопировать один файл
  19. Скопируйте папку и ее содержимое
  20. Копировать несколько файлов
  21. Копировать все файлы одного типа
  22. Переместить файл или папку
  23. Копирование файлов в Linux
  24. Утилита копирования файлов cp
  25. Синтаксис и опции
  26. Примеры копирования файлов в linux
  27. Копирование файлов по регулярным выражениям в Linux
  28. Копирование содержимого файлов в Linux
  29. Специальное копирование файлов в Linux с помощью tar
  30. Выводы

Скопировать директорию linux рекурсивно

Для копирования файлов используйте команду cp («copy»). Она принимает два аргумента: исходный файл, который существует и должен быть скопирован, и целевой файл, который определяет имя файла-копии. cp создает идентичную копию файла, присваивая ей указанное имя целевого файла. Если файл с таким именем уже существует, cp перезаписывает его. Она не изменяет исходный файл.

Чтобы скопировать файл `my-copy’ в файл `neighbor-copy’, наберите:

$ cp my-copy neighbor-copy [Enter]

Эта команда создает новый файл с именем `neighbor-copy’, который является идентичным файлу `my-copy’ во всех отношениях, кроме имени файла, имени владельца, группы и времени модификации — новый файл имеет время модификации, указывающее момент его копирования. Файл `my-copy’ не изменяется.

Чтобы сохранить все атрибуты оригинального файла, включая его время модификации, имя владельца, группу и права доступа, используйте ключ `-p’ («preserve»)(сохранить).

Чтобы скопировать файл `my-copy’ в файл `neighbor-copy’, сохранив все атрибуты исходного файла в копии, наберите:

$ cp -p my-copy neighbor-copy [Enter]

Эта команда копирует файл `my-copy’ в новый файл `neighbor-copy’, полностью идентичный исходному по всем аспектам, кроме имени файла.

Чтобы скопировать каталог вместе со всеми подкаталогами и файлами, которые он содержит, используйте опцию -R — она создает рекурсивную копию указанного каталога и его содержимого.

Чтобы скопировать каталог `public_html’ вместе со всеми его файлами и подкаталогами, в новый каталог `private_html’, введите:

$ cp -R public_html private_html [Enter]

Опция `-R’ не копирует файлы, являющиеся символической ссылкой, и не сохраняет оригинальные права доступа к файлам. Чтобы скопировать каталог рекурсивно, включая все ссылки и учитывая все права доступа, используйте опцию `-a’ («archive»). Это полезно для резервного копирования больших по объему деревьев каталогов.

Чтобы сделать резервную копию дерева каталогов `public_html’ в каталог `private_html’, введите:

Источник

Команда cp

Описание команды cp

Синтаксис

что_копируем — файл, несколько файлов, директория или несколько директорий, которые необходимо скопировать.

куда_копируем — название файла, в который выполняется копирование другого файла, или директория, в которую копируются исходные файлы или директории.

Опции

МЕТОД определяет, каким образом формируется имя резервной копии. МЕТОД может принимать значения:

  • none или off — не делать резервных копий, даже если включена опция —backup
  • numbered или t — имя резервной копии получит числовой индекс (пример: myfile.txt

).

  • existing или nil — если в директории уже есть резервные копии с числовыми индексами, то использовать числовые индексы для новых резервных копий, во всех остальных случаях использовать метод simple .
  • simple или never — делать обычные резервные копии (пример: myfile.txt

    Например, при использовании команды cp —parents a/b/myfile dstdir , файл myfile будет скопирован в директорию dstdir/a/b . То есть будут созданы промежуточные директории.

    Читайте также:  Arturia fx collection 2021 mac os

    КОГДА может принимать значения:
    always — всегда создавать «легкую» копию файла. Создается ссылка на исходные данные. Фактического копирования данных не происходит. Блоки данных копируются только тогда, когда они изменяются.
    auto — создается обычная полная копия.

    КОГДА может принимать значения:
    auto — (поведение по умолчанию) копировать разреженные файлы в разреженные файлы.
    always — результирующий файл всегда разреженный, если в исходном есть достаточное количество нулевых последовательностей.
    never — не делать результирующие файлы разреженными.

    Примеры использования команды cp

    Скопировать файл в другую директорию

    Скопируем файл myfile.txt в директорию mydir :

    Скопируем файл myfile1.txt в новый файл myfile2.txt

    Скопировать несколько файлов

    Для копирования нескольких файлов нужно перечислить их через пробел. Послений параметр определяет результирующую директорию, в которую будут скопированы файлы.

    Скопировать файл с подтверждением

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

    Показать информацию о копируемых файлах

    При использовании опции -v выводится информация о том, какие файлы и куда копируются.

    Скопировать директорию

    Чтобы скопировать директорию и все ее содержимое нужно использовать опцию -r

    Скопировать только если файлы новее

    Скопируем файлы вида myfile*.txt (например, это могут быть файлы myfile1.txt myfile10.txt myfile2.txt ) в директорию mydir , но если результирующий файл существует, то копирование выполняется только в том случае, если исходный файл новее.

    Не перезаписывать существующие файлы

    Чтобы существующие файлы не перезаписывались, используется опция -n

    Скопировать только атрибуты

    Скопируем только атрибуты файла. Содержимое файла не копируется.

    Создать резервную копию для результирующих файлов, если они существуют

    Скопируем файл myfile1.txt в файл myfile2.txt . Если файл myfile2.txt существует, то будет создана его резервная копия.

    Принудительно перезаписывать существующие файлы назначения

    Если файл назначения существует и не может быть открыт и удален, то можно использовать опцию -f , чтобы принудительно перезаписать такой файл:

    Источник

    🎯 Как копировать (и вставлять) файлы и каталоги из командной строки Linux

    Копирование и вставка файлов – это одна из самых простых вещей, которые вы можете делать на компьютере.

    В Linux у вас есть несколько вариантов выполнения этой работы.

    В командной строке все более просто, что дает вам больше контроля, а в некоторых случаях значительно упрощает.

    Скопировать один файл

    Каждый раз, когда вы хотите скопировать файл или папку в командной строке Linux, вы будете использовать команду cp.

    cp является сокращением copy.

    Синтаксис тоже прост.

    Используйте cp, затем файл, который вы хотите скопировать, и место назначения, куда вы хотите его переместить.

    Скопируйте папку и ее содержимое

    Чтобы скопировать папку и ее содержимое, вам нужно указать команде cp рекурсивное копирование.

    Это достаточно просто => с флагом -r.

    Весь остальной ваш синтаксис точно такой же.

    Флаг -r служит для указания cp, что он работает с каталогом и должен копировать его содержимое.

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

    Вы также можете скопировать несколько файлов. Командная строка Linux позволяет указывать сразу несколько элементов в квадратных скобках <>.

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

    Все три файла разных типов будут скопированы в каталог Documents.

    Копировать все файлы одного типа

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

    Звездочка / подстановочный знак указывает командной строке Linux принимать абсолютно все файлы в этом месте.

    Таким образом, если вы скажете Linux, чтобы он копировал * .jpg, он скопирует все файлы JPG, независимо от имени или того, что находится перед частью названия файла .jpg.

    Читайте также:  Пересборка ядра linux ubuntu

    Если вы хотите использовать несколько типов файлов, например JPG и PNG, вы можете использовать скобки

    Переместить файл или папку

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

    Источник

    Копирование файлов в Linux

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

    Не всегда есть доступ к файловому менеджеру: из-за различных поломок графическая оболочка на домашнем компьютере может быть недоступна, а на серверах используется только консольный интерфейс. К тому же копирование файлов Ubuntu через терминал намного эффективнее, и вы сами в этом убедитесь. Сегодня мы рассмотрим не только обычное копирование командой cp Linux, но и не совсем обычное: с помощью tar и find.

    Утилита копирования файлов cp

    Название утилиты cp — это сокращение от Copy, что означает копировать. Утилита позволяет полностью копировать файлы и директории.

    Синтаксис и опции

    Общий синтаксис cp выглядит вот так:

    $ cp опции файл-источник файл-приемник

    $ cp опции файл-источник директория-приемник/

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

    Утилита имеет несколько интересных опций, которые могут сильно помочь при нестандартных задачах копирования, поэтому давайте их рассмотрим:

    • —attributes-only — не копировать содержимое файла, а только флаги доступа и владельца;
    • -f, —force — перезаписывать существующие файлы;
    • -i, —interactive — спрашивать, нужно ли перезаписывать существующие файлы;
    • -L — копировать не символические ссылки, а то, на что они указывают;
    • -n — не перезаписывать существующие файлы;
    • -P — не следовать символическим ссылкам;
    • -r — копировать папку Linux рекурсивно;
    • -s — не выполнять копирование файлов в Linux, а создавать символические ссылки;
    • -u — скопировать файл, только если он был изменён;
    • -x — не выходить за пределы этой файловой системы;
    • -p — сохранять владельца, временные метки и флаги доступа при копировании;
    • -t — считать файл-приемник директорией и копировать файл-источник в эту директорию.

    Примеры копирования файлов в linux

    Теперь, когда вы знаете основные опции, можно перейти к практике. Например, мы хотим скопировать некую картинку из домашней папки в подкаталог pictures:

    Или можем явно указать имя новой картинки:

    Копирование папок осуществляется с помощью ключа -r:

    После выполнения этой команды копирования

    /папка будет скопирована в папку

    /Документы. Главное, не забывайте поставить слэш в конце выражения или использовать опцию -t. Иначе папка

    /документы будет перезаписана.

    По умолчанию команда cp Linux перезаписывает существующие файлы или папки, но можно заставить утилиту спрашивать, нужно ли перезаписывать каждый файл, если вы не уверены в правильности составления команды:

    Есть и противоположная опция -n, означающая «никогда не перезаписывать существующие файлы».

    Опция -u полезна в следующем случае: вы знаете или предполагаете, что в директории, куда копируется файл, есть старая его версия, тогда оператор -u выполнит замену на новую версию:

    Сp также поддерживает специальные символы замены * и ?. Например, следующая команда скопирует все файлы, начинающиеся на test:

    Читайте также:  Этапы процесса установки windows

    Если нужно применить более сложные регулярные выражения, придётся комбинировать утилиту cp с find или egrep.

    В случае, если важно сохранить права доступа к файлу и его владельца, нужно использовать опцию -p:

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

    Будет создан файл с таким же именем и расширением .bak

    По умолчанию в cp не отображается прогресс копирования файла, что очень неудобно при работе с большими файлами, но его можно легко посмотреть с помощью утилиты cv.

    Копирование файлов по регулярным выражениям в Linux

    В утилите find можно применять различные условия и регулярные выражения для поиска файлов. Я уже немного писал о ней в статье как найти новые файлы в Linux. Мы можем скопировать все найденные с помощью find файлы, вызвав для каждого из них команду cp. Например, копируем все файлы в текущей директории, содержащие в имени только цифры:

    find . -name 5 -exec cp <>

    Здесь точка указывает на текущую директорию, а параметр name задает регулярное выражение. Параметром exec мы задаем, какую команду нужно выполнить для обнаруженных файлов. Символ <> — подставляет имя каждого файла.

    Но не find‘ом единым такое делается. То же самое можно получить, запросив список файлов директории в ls, отфильтровав его по регулярному выражению egrep и передав имена файлов по очереди в cp с помощью xargs:

    / | egrep ‘[a-zA-Z]’ | xargs cp -t

    Это не совсем удобный способ копировать файлы Linux, но всё же он возможен. Будут скопированы все файлы из домашней директории, содержащие в имени только английские буквы.

    Копирование содержимого файлов в Linux

    Вы можете не только копировать сами файлы, но и управлять их содержимым. Например, склеить несколько файлов в один или разрезать файл на несколько частей. Утилита cat используется для вывода содержимого файла, в комбинации с операторами перенаправления вывода Bash вы можете выполнять копирование содержимого файла Linux в другой файл. Например:

    cat файл1 > файл2

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

    cat файл1 файл2 > файл3

    Специальное копирование файлов в Linux с помощью tar

    Linux интересен тем, что позволяет выполнять одно и то же действие различными путями. Копирование в Linux тоже может быть выполнено не только с помощью cp. При переносе системных файлов в другой каталог, резервном копировании системных файлов и т.д. важно чтобы сохранились атрибуты, значения владельцев файлов и символические ссылки как они есть без какой-либо модификации.

    Утилита cp тоже может справиться с такой задачей? если указать опцию -p, но можно использовать утилиту архивации tar. Мы не будем создавать никаких файлов архивов, а построим туннель. Первая часть команды пакует файл и отправляет на стандартный вывод, а другая сразу же распаковывает в нужную папку:

    tar cf — /var | ( cd /mnt/var && tar xvf — )

    Здесь мы полностью копируем содержимое папки /var в папку /mnt/var. Так вы можете копировать папку Linux, причём абсолютно любую или даже целую операционную систему.

    Выводы

    Теперь вы знаете, как выполняется копирование файлов Ubuntu и в Linux в целом. Как видите, в терминале это выполняется намного быстрее и эффективнее, чем с помощью графического интерфейса, если помнить нужные команды. Если у вас остались вопросы, спрашивайте в комментариях!

    Источник

  • Оцените статью