- Скопировать директорию linux рекурсивно
- Команда cp
- Описание команды cp
- Синтаксис
- Опции
- Примеры использования команды cp
- Скопировать файл в другую директорию
- Скопировать несколько файлов
- Скопировать файл с подтверждением
- Показать информацию о копируемых файлах
- Скопировать директорию
- Скопировать только если файлы новее
- Не перезаписывать существующие файлы
- Скопировать только атрибуты
- Создать резервную копию для результирующих файлов, если они существуют
- Принудительно перезаписывать существующие файлы назначения
- 🎯 Как копировать (и вставлять) файлы и каталоги из командной строки Linux
- Скопировать один файл
- Скопируйте папку и ее содержимое
- Копировать несколько файлов
- Копировать все файлы одного типа
- Переместить файл или папку
- Копирование файлов в Linux
- Утилита копирования файлов cp
- Синтаксис и опции
- Примеры копирования файлов в linux
- Копирование файлов по регулярным выражениям в Linux
- Копирование содержимого файлов в Linux
- Специальное копирование файлов в Linux с помощью tar
- Выводы
Скопировать директорию 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
).
Например, при использовании команды cp —parents a/b/myfile dstdir , файл myfile будет скопирован в директорию dstdir/a/b . То есть будут созданы промежуточные директории.
КОГДА может принимать значения:
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.
Если вы хотите использовать несколько типов файлов, например 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:
Если нужно применить более сложные регулярные выражения, придётся комбинировать утилиту 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 в целом. Как видите, в терминале это выполняется намного быстрее и эффективнее, чем с помощью графического интерфейса, если помнить нужные команды. Если у вас остались вопросы, спрашивайте в комментариях!
Источник