как скопировать содержимое папки в другую папку linux
Копирование файлов в Linux
Не всегда есть доступ к файловому менеджеру: из-за различных поломок графическая оболочка на домашнем компьютере может быть недоступна, а на серверах используется только консольный интерфейс. К тому же копирование файлов Ubuntu через терминал намного эффективнее, и вы сами в этом убедитесь. Сегодня мы рассмотрим не только обычное копирование командой cp Linux, но и не совсем обычное: с помощью tar и find.
Утилита копирования файлов cp
Синтаксис и опции
Общий синтаксис cp выглядит вот так:
$ cp опции файл-источник файл-приемник
$ cp опции файл-источник директория-приемник/
После выполнения команды файл-источник будет полностью перенесен в файл-приемник. Если в конце указан слэш, файл будет записан в заданную директорию с оригинальным именем.
Утилита имеет несколько интересных опций, которые могут сильно помочь при нестандартных задачах копирования, поэтому давайте их рассмотрим:
Примеры копирования файлов в linux
Теперь, когда вы знаете основные опции, можно перейти к практике. Например, мы хотим скопировать некую картинку из домашней папки в подкаталог pictures:
Или можем явно указать имя новой картинки:
Копирование папок осуществляется с помощью ключа -r:
После выполнения этой команды копирования
/папка будет скопирована в папку
/Документы. Главное, не забывайте поставить слэш в конце выражения или использовать опцию -t. Иначе папка
/документы будет перезаписана.
По умолчанию команда cp Linux перезаписывает существующие файлы или папки, но можно заставить утилиту спрашивать, нужно ли перезаписывать каждый файл, если вы не уверены в правильности составления команды:
Есть и противоположная опция -n, означающая «никогда не перезаписывать существующие файлы».
Сp также поддерживает специальные символы замены * и ?. Например, следующая команда скопирует все файлы, начинающиеся на test:
Если нужно применить более сложные регулярные выражения, придётся комбинировать утилиту cp с find или egrep.
В случае, если важно сохранить права доступа к файлу и его владельца, нужно использовать опцию -p:
Для упрощения использования команды можно применять синтаксис фигурных скобок. Например, чтобы создать резервную копию файла, выполните:
По умолчанию в cp не отображается прогресс копирования файла, что очень неудобно при работе с большими файлами, но его можно легко посмотреть с помощью утилиты cv.
Копирование файлов по регулярным выражениям в Linux
В утилите find можно применять различные условия и регулярные выражения для поиска файлов. Я уже немного писал о ней в статье как найти новые файлы в Linux. Мы можем скопировать все найденные с помощью find файлы, вызвав для каждого из них команду cp. Например, копируем все файлы в текущей директории, содержащие в имени только цифры:
Но не find‘ом единым такое делается. То же самое можно получить, запросив список файлов директории в ls, отфильтровав его по регулярному выражению egrep и передав имена файлов по очереди в cp с помощью xargs:
Это не совсем удобный способ копировать файлы Linux, но всё же он возможен. Будут скопированы все файлы из домашней директории, содержащие в имени только английские буквы.
Копирование содержимого файлов в Linux
Вы можете не только копировать сами файлы, но и управлять их содержимым. Например, склеить несколько файлов в один или разрезать файл на несколько частей. Утилита cat используется для вывода содержимого файла, в комбинации с операторами перенаправления вывода Bash вы можете выполнять копирование содержимого файла Linux в другой файл. Например:
Если файл был не пустым, он будет перезаписан. Или мы можем склеить два отдельных файла в один:
cat файл1 файл2 > файл3
Специальное копирование файлов в Linux с помощью tar
Linux интересен тем, что позволяет выполнять одно и то же действие различными путями. Копирование в Linux тоже может быть выполнено не только с помощью cp. При переносе системных файлов в другой каталог, резервном копировании системных файлов и т.д. важно чтобы сохранились атрибуты, значения владельцев файлов и символические ссылки как они есть без какой-либо модификации.
Утилита cp тоже может справиться с такой задачей? если указать опцию -p, но можно использовать утилиту архивации tar. Мы не будем создавать никаких файлов архивов, а построим туннель. Первая часть команды пакует файл и отправляет на стандартный вывод, а другая сразу же распаковывает в нужную папку:
Здесь мы полностью копируем содержимое папки /var в папку /mnt/var. Так вы можете копировать папку Linux, причём абсолютно любую или даже целую операционную систему.
Выводы
Теперь вы знаете, как выполняется копирование файлов Ubuntu и в Linux в целом. Как видите, в терминале это выполняется намного быстрее и эффективнее, чем с помощью графического интерфейса, если помнить нужные команды. Если у вас остались вопросы, спрашивайте в комментариях!
Команда cp: правильное копирование папок с файлами в *nix
В этой статье будут раскрыты некоторые неочевидные вещи связанные с использованием wildcards при копировании, неоднозначное поведение команды cp при копировании, а также способы позволяющие корректно копировать огромное количество файлов без пропусков и вылетов.
Допустим нам нужно скопировать всё из папки /source в папку /target.
Первое, что приходит на ум это:
Сразу исправим эту команду на:
После копирования мы обнаружим, что скопировались не все файлы — были проигнорированы файлы начинающиеся с точки типа:
.profile
.local
.mc
и тому подобные.
Почему же так произошло?
Потому что wildcards обрабатывает shell ( bash в типовом случае). По умолчанию bash проигнорирует все файлы начинающиеся с точек, так как трактует их как скрытые. Чтобы избежать такого поведения нам придётся изменить поведение bash с помощью команды:
Чтобы это изменение поведения сохранилось после перезагрузки, можно сделать файл wildcard.sh c этой командой в папке /etc/profile.d (возможно в вашем дистрибутиве иная папка).
Однако, если в папке тысячи файлов и больше, то от подхода с использованием wildcards стоит отказаться вовсе. Дело в том, что bash разворачивает wildcards в очень длинную командную строку наподобие:
На длину командной строки есть ограничение, которое мы можем узнать используя команду:
Получим максимальную длину командной строки в байтах:
Получим что-то типа:
Итак, давайте будем обходиться вовсе без wildcards.
Давайте просто напишем
Однако, если папка target существует, то файлы будут скопированы в папку /target/source.
Не всегда мы можем удалить заранее папку /target, так как в ней могут быть нужные нам файлы и наша цель, допустим, дополнить файлы в /target файлами из /source.
Если бы папки источника и приёмника назывались одинаково, например, мы копировали бы из /source в /home/source, то можно было бы использовать команду:
И после копирования файлы в /home/source оказались бы дополненными файлами из /source.
Такая вот логическая задачка: мы можем дополнить файлы в директории-приёмнике, если папки называются одинаково, но если они отличаются, то папка-исходник будет помещена внутрь приёмника. Как скопировать файлы из /source в /target с помощью cp без wildcards?
Чтобы обойти это вредное ограничение мы используем неочевидное решение:
Те кто хорошо знаком с DOS и Linux уже всё поняли: внутри каждой папки есть 2 невидимые папки «.» и «..», являющиеся псевдопапками-ссылками на текущую и вышестоящие директории.
Поведение этой команды однозначно. Всё отработает без ошибок вне зависимости от того миллион у вас файлов или их нет вовсе.
Выводы
Если нужно скопировать все файлы из одной папки в другую, не используем wildcards, вместо них лучше использовать cp в сочетании с точкой в конце папки-источника. Это скопирует все файлы, включая скрытые и не завалится при миллионах файлов или полном отсутствии файлов.
Послесловие
vmspike предложил аналогичный по результату вариант команды:
ВНИМАНИЕ: регистр буквы T имеет значение. Если перепутать, то получите полную белиберду: направление копирования поменяется.
Благодарности:
Копирование файлов и директорий: команда cp в Linux и MacOS
Перевод статьи «Copy a Directory in Linux – How to cp a Folder in the Command Line in Linux and Unix (MacOS)».
Команда cp относительно простая, но ее поведение может изменяться в зависимости от передаваемых опций и того, что именно (файлы или директории) и куда копируется.
Для просмотра документации или руководства по использованию команды cp выполните в терминале команду man cp :
В своей базовой форме эта команда принимает в качестве инпута источник, который вы хотите скопировать, и «пункт назначения» — то, куда именно вы хотите его скопировать. Источником может быть файл, несколько файлов или вообще директория.
Как создать копию файла в текущей директории
Чтобы создать копию файла в той же директории, нужно передать команде cp имя исходного файла и имя, которое нужно дать файлу-копии.
Допустим, у вас есть файл a.txt и вы хотите создать его копию под именем b.txt в той же директории:
Для справки: команда ls выводит список файлов в текущей директории.
По умолчанию команда cp использует в качестве пути к файлам вашу текущую директорию.
Как скопировать файл в другую директорию
Чтобы скопировать файл в директорию, отличную от вашей текущей, нужно просто указать путь к ней:
После выполнения команды cp ранее пустая directory-1 содержит файл a.txt.
По умолчанию копируемый файл сохраняет свое имя, но вы можете указать любое другое:
Как скопировать несколько файлов в другую директорию
Чтобы одновременно скопировать несколько файлов, вы можете передать команде несколько источников, а в конце указать пункт назначения:
В этом примере оба файла (first.txt и second.txt) были скопированы в директорию directory-1.
Примечание: при передаче нескольких источников последний аргумент обязательно должен быть директорией.
Как скопировать одну директорию в другую
Если вы попытаетесь передать команде cp в качестве источника имя директории, вы получите ошибку:
В следующем примере у нас есть две директории (directory-1 и directory-2), расположенные в нашей текущей директории. В directory-1 есть файл a.txt. Мы рекурсивно копируем directory-1 в directory-2. После этого в нашей текущей директории по-прежнему есть directory-1 и directory-2, при этом в directory-2 есть копия directory-1, содержащая файл a.txt.
Копирование директории целиком и копирование всего содержимого из директории
Примечание редакции Techrocks. Когда мы попробовали применить эту инструкцию в терминале Linux, у нас ничего не вышло. В одной статье мы нашли, что описанный функционал работает в MacOS, но не в Linux. Поэтому здесь мы сначала приведем перевод инструкций автора, а затем от себя дополним их.
При копировании директории есть интересный нюанс. Если директория, которую вы указываете как пункт назначения, уже существует, вы можете скопировать в нее либо все содержимое директории-источника, либо всю директорию-источник целиком. Выбор регулируется добавлением конечного слэша / к имени директории-источника.
Для пользователей Linux: после слэша нужно добавить точку. Если хотите почитать более подробно, вот хорошая статья на Хабре.
Как предотвратить перезапись файлов при копировании
По умолчанию команда cp перезаписывает существующие файлы. Для примера создадим в текущей директории файл a.txt с текстом A, а в директории directory-1 — файл a.txt с текстом B. При копировании файла a.txt из текущей директории в directory-1 файл a.txt перезаписывается (в его содержимом было B, стало A).
Примечание: команда cat среди прочего служит для вывода содержимого файлов на экран.
Есть два способа предотвратить перезапись файлов.
Флаг —interactive
Флаг —no-clobber
Другие опции
Как копировать файлы и каталоги в Linux
Обычной практикой является использование команды cp для копирования файлов и rsync для копирования каталогов.
Чтобы иметь возможность копировать файлы и каталоги, у вас должны быть как минимум права на чтение исходного файла и права записи в целевой каталог.
Копирование файлов с помощью команды cp
В операционных системах Linux и Unix команда cp используется для копирования файлов и каталогов.
Скопируйте файл в каталог
Чтобы скопировать файл в каталог, укажите абсолютный или относительный путь к каталогу. Если целевой каталог не указан, файл копируется в текущий каталог.
В следующем примере мы file.txt файл file.txt в file.txt /backup :
При указании в качестве места назначения только имени каталога скопированный файл будет иметь то же имя, что и исходный файл.
Если вы хотите скопировать файл под другим именем, вам необходимо указать желаемое имя файла:
Копировать несколько файлов
Чтобы скопировать сразу несколько файлов и каталогов, укажите имена исходных файлов и каталогов, за которыми следует каталог назначения в качестве последнего аргумента:
При копировании нескольких файлов местом назначения должен быть каталог.
Копирование каталогов с помощью команды cp
Приведенная выше команда создаст каталог назначения и рекурсивно скопирует все файлы и подкаталоги из источника в каталог назначения.
Копирование файлов и каталогов с помощью команды rsync
rsync — это быстрая и универсальная утилита командной строки, которая синхронизирует файлы и каталоги между двумя местоположениями. Его можно использовать для копирования файлов в локальные и удаленные места.
rsync включает множество параметров, которые контролируют каждый аспект его поведения.
Чтобы скопировать один файл из одного места в другое, вы должны выполнить следующую команду:
Если целевой файл существует, rsync перезапишет его.
Эту же команду можно использовать для копирования каталога:
Чтобы узнать больше о rsync прочтите следующие статьи:
Выводы
Если у вас есть вопросы, оставьте комментарий ниже.
Задачи по копированию файлов из одного места в другое возникают у пользователей чаще всего, скопировать нужные объекты можно через менеджер файлов, в котором
Название утилиты cp — это сокращение от Copy, что означает копировать. Утилита позволяет полностью копировать файлы и директории.
СИНТАКСИС И ОПЦИИ
Общий синтаксис cp выглядит вот так:
$ cp опции файл-источник файл-приемник
$ cp опции файл-источник директория-приемник/
После выполнения команды файл-источник будет полностью перенесен в файл-приемник. Если в конце указан слэш, файл будет записан в заданную директорию с оригинальным именем.
Утилита имеет несколько интересных опций, которые могут сильно помочь при нестандартных задачах копирования, поэтому давайте их рассмотрим:
Как скопировать файл из одной директории в другую с помощью Linux
Синтаксис для копирования файла с одного места на другое выглядит следующим образом:
cp /source/path/name /target/path/name
Например представьте, что вы имеете следующую структуру папок:
Если вы хотите скопировать file_one из текущего местоположения в /home/andreyex/documents/folder_one в /home/andreyex/documents/folder_two, то вы должны ввести следующую команду в командной строке:
cp /home/andreyex/documents/folder_one/file_one /home/andreyex/documents/folder_two/file_one
Ярлыки вы можете сделать здесь.
Главная часть может быть заменена на тильду (
), что объясняется в этой статье. Это изменяет команду на:
Вы можете просто опустить имя файла для цели, если вы собираетесь использовать то же имя файла
Если вы уже в целевой папке вы можете просто заменить путь к цели с полной остановкой.
В качестве альтернативы, если вы уже в исходной папке вы можете просто указать имя файла в качестве источника следующим образом:
Как сделать резервную копию перед копированием файлов в Linux
В предыдущем разделе folder_one содержит файл с именем file_one и folder_two не делает. Представьте себе, что folder_two имеет файл с именем file_one и вы запустили следующую команду:
Приведенная выше команда перезапишет file_one, который в настоящее время находится в folder_two. Там нет подсказок, нет предупреждения и сообщения об ошибках, потому что, вы указали действительную команду.
Вы можете принять меры предосторожности при копировании файлов в Linux, для создания резервной копии файла, прежде чем он переписывает его. Просто используйте следующую команду:
В папке назначения теперь присутствует файл, который был скопирован и там будет также файл с тильдой (
) в конце, которая является резервной копией оригинального файла.
Вы можете изменить команду резервного копирования для работы в несколько ином виде, так что она создает пронумерованные резервные копии. Вы можете это сделать, если вы уже скопировали файлы и резервные копии уже существуют. Это является одной из форм контроля версий
Имя файла для резервных копий будет меняться: file_one.
Как запросить перед перезаписью файлов при копировании в Linux
Если вы не хотите делать резервные копии файлов, лежащих в вашей файловой системе, но вы также хотите, убедиться, что команда копия не перезаписывает файл без разбора вы можете получить приглашение, чтобы показать вопросом, не хотите ли вы перезаписать.
Для этого используйте следующий синтаксис:
Сообщение будет выглядеть следующим образом : cp: overwrite ‘./file1’?
Для перезаписи файла нажмите Y на клавиатуре или для отмены нажмите N или CTRL и C одновременно.
Что происходит при копировании символьных ссылок в Linux
Символическая ссылка немного походит на ярлык на рабочем столе. Содержимое символической ссылки является адрес физического файла.
Представьте себе, вы имеете следующую структуру папок:
Посмотрите на следующую команду:
Здесь не должно быть ничего нового, так как он копирует физический файл из одной папки в другую.
Что происходит, однако, если скопировать символическую ссылку из folder_two в folder3?
Файл, который копируется в folder3 не будет символической ссылкой. Это на самом деле файл, на который указывает символическая ссылка, так на самом деле вы получите тот же результат, как если бы путем копирования file_one из folder_one.
Кстати вы можете получить тот же результат с помощью следующей команды:
Просто чтобы быть уверенным, хотя есть еще один переключатель, который абсолютно заставляет копировать файл, а не символическую ссылку:
Если вы хотите скопировать символическую ссылку необходимо указать следующую команду:
Чтобы символическую ссылку скопировать, а не физический файл с помощью следующей команды:
Как создавать жесткие ссылки с помощью команды ср
В чем разница между символической ссылкой и жесткой связи?
Символическая ссылка – это ярлык для физического файла. Он не содержит больше, чем адрес на физический файл.
Жесткая связь, на основную ссылку на тот же физический файл, но с другим именем. Это почти как прозвище. Это отличный способ организации файлов, не занимая дальнейшего дискового пространства.
Вы можете создать жесткую ссылку с помощью команды ср.
В качестве примера того, почему вы могли бы использовать жесткую ссылку учесть, что у вас есть папка под названием видео и в этой папке видео у вас есть действительно большой видео файл с именем honeymoon_video.mp4. Теперь представьте, что вы также хотите, чтобы видео быть известным как barbados_video.mp4, потому что он также имеет кадры Барбадоса.
Вы можете просто скопировать файл и дать ему новое имя, но это означает, что вы увеличиваете в два раза больше дискового пространства для того, что, по существу, то же самое видео.
Вы могли бы вместо того, чтобы создать символическую ссылку с именем barbados_video.mp4, которая указывает на файл honeymoon_video.mp4. Это будет работать хорошо, но если кто-то удалил honeymoon_video.mp4 вы остались бы со ссылкой и ничего другого и связь по-прежнему занимает дисковое пространство.
Единственное отличие состоит в том, что они содержат разное количество индексных дескрипторов. (уникальные идентификаторы). Удаление файла honeymoon_video.mp4 не удаляет файл, но только снижает количество для этого файла на 1. Файл будет удален только если все ссылки на этот файл будут удалены.
Чтобы создать ссылку вы могли бы сделать что-то вроде этого:
Как создать символические ссылки с помощью команды ср
Если вы хотите создать символическую ссылку вместо жесткой ссылки вы можете использовать следующую команду:
Как скопировать файлы, если они новее
Если вы хотите скопировать файлы в папку, но только с перезаписью файлов назначения, если исходный файл новее, то вы можете использовать следующую команду:
Стоит отметить, что если файл не существует на целевой стороне, то копия будет иметь место.
2. Как скопировать несколько файлов
Если вы хотите скопировать несколько файлов одновременно в новое место, вы можете сделать это следующим образом:
cp file1 file2 file3 fileN target_directory
Эта команда скопирует все указанные файлы в целевой каталог. Если в целевом каталоге есть файл(ы), соответствующий имени исходного файла (ов), он будет перезаписан.
3. Несколько способов обработки перезаписи при копировании файлов.
Вероятно, вы не всегда хотите, чтобы ваши существующие файлы целей были перезаписаны, и это абсолютно логично.
Вы можете ввести y для перезаписи существующего файла или n, чтобы не переписать его.
Резервная копия файла заканчивается на
Как скопировать папки
Копирование папок такое же, как копирование файлов.
Например представьте, что вы имеете следующую структуру папок:
Представьте, что вы хотите переместить папку folder_one в папку folder_two следующим образом:
Вы можете использовать следующую команду:
Кроме того, можно использовать следующую команду:
Это копирует содержимое folder_one, а также любые суб-каталоги и файлы в пределах подкаталогов.
Копирование файлов и каталогов
В Bash для копирования файлов используется команда cp (от “copy”), которой обычно передаются два аргумента:
адрес с именем исходного файла,
новый адрес с именем или просто адрес каталога, куда помещается копия.
Адрес может быть как абсолютным, так относительным. Если операции с файлами выполняются в текущем каталоге, то указывать адрес смысла нет. Пишется только имя исходного файла и имя копии. Поскольку файлов с одинаковыми именами и адресами быть не может, имя копии должно отличаться от имени исходного файла.
В данном случае создается копия файла readme, которая остается в той же директории под именем readme2.
В папку Desktop копируется файл readme. Здесь текущим является родительский Desktop’у каталог. Имена копии и файла оригинала будут совпадать, а вот полные адреса – нет.
Здесь копируется файл из одного каталога в другой, используются абсолютные адреса, имя копии изменяется.
Если надо скопировать несколько разных файлов в один и тот же каталог, то после команды cd сначала перечисляются все файлы-оригиналы, а последним указывается каталог, куда помещаются копии. Понятно, что при таком групповом действии имена файлов изменить нельзя.
Перемещение и переименование
В Bash-оболочке Linux для перемещения и переименования используется одна и та же команда – mv (от “move” – перемещать). Переименование можно рассматривать как частный случай перемещения, ведь по-сути изменяется полный адрес файла, что равносильно перемещению, даже если файл остается в том же каталоге.
Также как в случае cp, для mv необходимо указать пару аргументов. Выбор между перемещением и переименованием зависит от того, что это за аргументы. При перемещении файл меняет свой адрес, следовательно, если в первом и втором аргументах указаны разные адреса, то произойдет перемещение. Если адреса одинаковые, а различаются только имена, происходит переименование. Кроме того, перемещение может быть совмещено с переименованием.
В случае перемещения без переименования во втором аргументе указывается только каталог места назначения.
mv document.txt Work
mv document.txt Work/doc23.txt
Здесь в первом случае файл document.txt перемещается в каталог Work. Во-втором случае одновременно происходит перемещение файла и его переименование: файл document.txt перемещается в директорию Work и получает новое имя doc23.txt.
При использовании команды mv для переименования в качестве второго аргумента указывается новое имя:
mv order.txt orderNew.txt
mv Work/list.odt Work/names.odt
Каталоги перемещаются и переименовываются по тому же принципу, что и файлы. Групповое перемещение файлов работает также, как с командой cp.
Создание файлов и каталогов
Новые директории создаются командой mkdir. Например, чтобы создать каталог Work в текущей директории необходимо выполнить следующую команду:
Существует множество способов создания файлов, обычно они создаются какой-либо программой. Если все же возникает необходимость создать пустой файл, сделать это можно с помощью программы touch. В качестве аргумента ей передается имя создаваемого файла. Еще один способ – перенаправление вывода какой-либо команды в файл. Пример:
Здесь программа cal выводит календарь на текущий месяц, а поскольку стоит знак перенаправления вывода, то вывод команды будет записан в файл January, находящийся в папке Work.
Удаление файлов и каталогов
Для удаления файлов используется команда rm. Например:
Вопросы
У вас в каталоге есть файлы с разными расширениями. Вам надо группу файлов, имеющих одно и тоже расширение, скопировать в другой каталог. Как это сделать одной командой?
Какой ключ надо использовать, чтобы при перемещении случайно не перезаписать уже имеющийся в каталоге файл с таким именем?
Курс с ответами к заданиям и дополнительными уроками:
android-приложение, pdf-версия.
6. Как скопировать несколько каталогов
Вы также можете скопировать несколько каталогов одновременно с помощью команды cp в Linux.
Просто используйте его так же, как и для одного каталога.
Это всегда последний аргумент в команде, который принимается как целевой каталог.
Если вы хотите скопировать только содержимое нескольких каталогов одновременно, вы также можете это сделать:
Фактически, вы можете смешивать каталоги, их содержимое и файлы в целом.
7. Как сохранить атрибуты при копировании
Когда вы копируете файл в новое место, его атрибуты, такие как права доступа к файлам и временные метки файла, изменяются.
Давайте посмотрим на пример.
Если я попытаюсь скопировать этот файл, его атрибуты будут изменены:
Но если мы используем параметр p, скопированный файл сохранит режим, право собственности и отметку времени.
Но подождите! Разве это не должно было сохранить право собственности на исходные файлы? Но вот владелец (root) исходного файла был изменен на andreyex,
Как видно из вышеприведенного вывода, команда сохранила только временную метку исходного файла.
Примеры, показанные здесь, являются наиболее распространенными, которые вы будете использовать в качестве пользователя Linux, сисадмина или разработчика программного обеспечения.
Если вам понравилась эта статья, пожалуйста, поделитесь этой статьей о социальных сетях и различных форумах.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Перекрёстные ссылки книги для Копирование, перемещение, создание и удаление файлов и каталогов
Linux
ПРИМЕРЫ КОПИРОВАНИЯ ФАЙЛОВ В LINUX
Теперь, когда вы знаете основные опции можно рассмотреть примеры.Например, мы хотим скопировать некую картинку из домашней папки в подкаталог pictures:
Или можем явно указать имя новой картинки:
После выполнения этой команды копирования
/папка будет скопирована в папку
/документы будет перезаписана.
По умолчанию команда cp linux перезаписывает существующие файлы или папки, но можно заставить утилиту спрашивать нужно ли перезаписывать каждый файл если вы неуверены в правильности составления команды:
Если нужно применить более сложные регулярные выражения, придется комбинировать утилиту cp с find или egrep.
Для упрощения использования команды можно использовать синтаксис фигурных скобок. Например, чтобы создать резервную копию файла выполните:
По умолчанию в cp не отображается прогресс копирования файла, что очень неудобно при работе с большими файлами, но его можно легко посмотреть с помощью утилиты cv.
Скопировать файл в другую директорию
Скопируем файл myfile.txt в директорию mydir:
cp myfile.txt mydir
Скопируем файл myfile1.txt в новый файл myfile2.txt
cp myfile1.txt myfile2.txt
Скопировать несколько файлов
Для копирования нескольких файлов нужно перечислить их через пробел. Послений параметр определяет результирующую директорию, в которую будут скопированы файлы.
cp /etc/config/myfile1.txt /home/pupkin/myfile1.txt /mnt/some/myfile3.txt mydir
Скопировать файл с подтверждением
Выведем запрос на подтверждение перезаписи результирующего файла, если он существует:
Показать информацию о копируемых файлах
Скопировать директорию
Скопировать только если файлы новее
Скопируем файлы вида myfile*.txt (например, это могут быть файлы myfile1.txtmyfile10.txtmyfile2.txt) в директорию mydir, но если результирующий файл существует, то копирование выполняется только в том случае, если исходный файл новее.
Не перезаписывать существующие файлы
Скопировать только атрибуты
Скопируем только атрибуты файла. Содержимое файла не копируется.
cp –attributes-only myfile1.txt myfile2.txt
Создать резервную копию для результирующих файлов, если они существуют
Скопируем файл myfile1.txt в файл myfile2.txt. Если файл myfile2.txt существует, то будет создана его резервная копия.