Как скопировать папку в ubuntu
Next: Перемещение файлов и каталогов Up: Работа с файлами Previous: Просмотр каталогов Contents Index
Для копирования файлов используйте команду 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 -a public_html private_html [Enter]
Alex Otwagin 2002-12-16
Как скопировать файл в Linux через терминал
При работе с Linux через терминал не редко приходится создавать копии файлов или копировать файлы из одной папки в другую. Например, это могут быть файлы конфигураций, которые используются для настройки программ, или просто документы пользователя. В данной инструкции мы расскажем, как скопировать файл в Linux через терминал и какие команды для этого потребуются. Статья будет актуальной для любого дистрибутива Linux, например, Ubuntu Linux или Debian
Команда для копирования «cp»
Для копирования файлов в Linux через терминал используется команда « cp » (от англ. «copy»). Команда « cp » представляет собой утилиту командной строки для копирования файлов и каталогов. Она поддерживает перемещение одного или нескольких файлов или папок с параметрами для создания резервных копий и сохранения атрибутов.
В общем случае, для того чтобы скопировать файл в Linux через терминал достаточно ввести команду « cp » и передать ей имя исходного и нового файла. Например, для того чтобы скопировать « file.txt » в новый « newfile.txt » нужно выполнить следующую команду:
cp file.txt newfile.txt
Обратите внимание , по умолчанию команда « cp » всегда будет перезаписывать уже имеющиеся файлы копируемыми, но это поведение можно изменить с помощью опций, которые мы рассмотрим во второй части статьи.

Таким же образом выполняется копирование файла в другую папку. Вводим команду « cp », указываем путь к файлу и затем каталог, в который его нужно скопировать. Например, для того чтобы скопировать « file.txt » в каталог « folder » нужно выполнить вот такую команду:
cp file.txt folder/

Естественно, если это необходимо, вы можете вводить полные пути к файлам и папкам, которые копируете командой « cp ». Например, копирование может выглядеть так:
cp ~/temp/newfile.txt ~/temp/folder/

Еще один пример копирования с указанием полного пути:

При необходимости можно скопировать сразу несколько файлов. В этом случае сначала нужно перечислить файлы, а потом указать папку, в которую их нужно скопировать. Например, для того чтобы скопировать « file.txt » и « newfile.txt » в каталог « folder » нужно выполнить следующее:
cp file.txt newfile.txt folder/

Аналогичное действие можно выполнить и с помощью маски. Например, для того чтобы скопировать все txt -документы в определенную директорию можно выполнить вот такую команду:
cp *.txt folder/

При копировании каталогов нужно добавлять параметр « -R », так как без этого « cp » будет выдавать ошибку. Поэтому, для копирования каталогов нужно ввести команду « cp -R » и указать исходный и новый каталог. Например, для того чтобы скопировать каталог « folder » в « newfolder » вам нужно выполнить вот такую команду:
cp -R folder/ newfolder/

Как и в случае с файлами, папки можно копировать сразу по несколько штук. Для этого нужно ввести «cp», перечислить копируемые папки и указать каталог назначения. Например, для того чтобы скопировать папки « folder » и « folder2 » в « newbigfolder » нужно выполнить следующее:
cp -R folder/ folder2/ newbigfolder/

Синтаксис и опции команды «cp»
Команда « cp » имеет множество опций, с помощью которых можно контролировать буквально все аспекты копирования файлов. Синтаксис команды выглядит следующим образом:
cp [опции] источник приемник
Самых опций у команды « cp » очень много, поэтому мы рассмотрим только самые простые и часто используемые. С остальными опциями вы сможете ознакомиться отдельно, выполнив в терминале Linux команду « man cp ».
-R , -r , --recursive Рекурсивное копирование каталогов. -b Создание резервной копии для всех файлов, которые могли быть перезаписаны или удалены при копировании. -d Копирование символических ссылок, а не файлов, на которые они ссылаются. -L Копировать файлы, а не символические ссылки. -l , --link Создание жестких ссылок, а не их копирование. -P, --no-dereference Не переходить по символическим ссылкам. -f, --force Если существующий файл назначения не может быть открыт, удалите его и повторите попытку. -i, --interactive Запрос перед перезаписью файлов. -n, --no-clobber Не перезаписывать файлы. -s, --symbolic-link Создавать символические ссылки вместо копирования файлов. -t, --target-directory=directory Обрабатывать место назначения как директорию. -T, --no-target-directory Обрабатывать место назначения как директорию. -u , --update Копировать только если исходный файл новее. -v , --verbose Вывод подробной информации.
Как уже было сказано, для выполнения команды копирования в терминале Linux сначала нужно ввести « cp », потом используемые опции, потом источник, и в конце место назначения. При этом опции из одной буквы можно соединять, например, вместо « -r -v » можно написать просто « -rv ».

Ниже мы рассмотрим несколько примеров копирования с опциями.
- cp -r folder/ newfolder/
Рекурсивное копирование каталогов. - cp -rv folder/ newfolder/
Рекурсивное копирование с выводом подробной информации. - cp -ri folder/ newfolder/
Рекурсивное копирование в интерактивном режиме с запросом на перезапись. - cp -rn folder/ newfolder/
Рекурсивное копирование без перезаписи. - cp -ru folder/ newfolder/
Рекурсивное копирование только новых файлов.
- Как удалить папку в Linux через терминал (консоль)
- Как открыть файл в терминале Linux
- Как создать файл в Linux через терминал
- Как удалить файл в Linux через терминал
- Как подключиться по SSH из Windows 10
Создатель сайта comp-security.net, автор более 2000 статей о ремонте компьютеров, работе с программами, настройке операционных систем.
Остались вопросы?
Задайте вопрос в комментариях под статьей или на странице «Задать вопрос» и вы обязательно получите ответ.
Копирование файлов при помощи команды cp
Команда cp в командной строке используется для копирования файлов и папок. cp является одной из основных команд в большинстве операционных систем, таких как Linux, macOS и Unix.
Как копировать файлы, используя команду cp

Команда cp используется для копирования файлов и папок в командной строке.
Синтаксис команды `cp` выглядит следующим образом:
Некоторые распространенные опции `cp` включают:
`-r` или `-R` (рекурсивное копирование) — используется для копирования целых папок и их содержимого.
`-i` (интерактивный режим) — позволяет пользователю подтверждать замену существующих файлов.
`-v` (verbose) — выводит подробную информацию о процессе копирования.
Ниже приведены несколько примеров использования команды cp.
1. Копирование одного файла в другую папку:
cp файл.txt /путь/к/папке/
2. Копирование папки и ее содержимого:
cp -r папка /путь/к/целевой/папке/
3. Копирование с заменой существующих файлов:
cp -f файл.txt /путь/к/папке/
4. Копирование с подтверждением замены существующих файлов:
cp -i файл.txt /путь/к/папке/
Обратите внимание, что в команде `cp` порядок аргументов важен: первый аргумент представляет исходный файл или папку, и второй аргумент указывает путь к целевому файлу или папке.
Как установить команду cp
cp является частью стандартного набора команд в большинстве операционных систем, таких как Linux, macOS и Unix. Она обычно устанавливается по умолчанию и доступна из командной строки. Если вы не можете использовать cp в вашей операционной системе, убедитесь, что вы используете правильный синтаксис команды. Если проблема не в синтаксисе, то вероятно cp у вас не установлена.
Если вы используете Linux или Unix, более вероятно, что она уже установлена. Но если вы столкнулись с какими-либо проблемами, можно установить пакет `coreutils`, который включает команду `cp`. Для установки этого пакета используйте команду в вашем менеджере пакетов, например:
В Ubuntu или Debian: `sudo apt-get install coreutils`
В CentOS или Fedora: `sudo yum install coreutils`
В Arch Linux: `sudo pacman -S coreutils`
Если вы используете macOS, стандартный набор команд, включая cp, уже установлен без дополнительных действий. Если у вас есть доступ к командной строке и у вас есть достаточные привилегии, вы должны иметь возможность использовать cp. Если же у вас нет доступа к команде `cp`, обратитесь к системному администратору или провайдеру услуг для получения помощи по установке команды.
07. Создание и копирование файлов
Чтобы научиться работать с файлами, нам понадобятся тестовые файлы. Их мы можем создать с помощью команды touch filename. Вообще, основная задача touch – обновить время доступа к файлу, поэтому и такое название – потрогать. Если файл существует, применив touch на него ничего с ним не случится, только обновится информация в иноде, а если файла не существует – он создастся.
touch file
Это может быть полезно в каких-нибудь скриптах, но и сейчас это помогает нам создать тестовые файлы.

С помощью touch можно разом создать несколько файлов:
touch file1 file2 file3
Одна из фишек командной строки – возможность работать с регулярными выражениями. Например, мы можем написать:
touch file5..15>
и баш преобразит это в:
touch file5 file6 file7 .
и т.д., в итоге мы получим кучу файлов. Тоже самое работает и с буквами, допустим, тот же:
mkdir dir_a..f>
Но о регулярных выражениях мы еще поговорим.

Также можно создавать невидимые файлы и директории. Для этого в начале имени файла или директории следует указывать точку. Например:
touch .file20 mkdir .dir_h
Если посмотреть на вывод ls, скрытых файлов и директорий не увидеть. Чтобы их увидеть, для ls нужен ключ -a:
ls -a
Тогда мы увидим все файлы в директории. Для того, чтобы увидеть скрытые файлы в файловом менеджере, можно нажать Ctrl + h. Тоже самое, чтобы скрыть. Обычно скрытые файлы нужны всяким программам для хранения настроек в домашней директории пользователя, но не только. В целом это позволяет скрыть ненужные пользователю файлы и директории.

И так, что можно делать с файлами? Начнём с копирования. Для этого используется команда cp – copy. Чтобы скопировать файл в текущую директорию, используем cp имя нужного файла и имя для копии:
cp file newfile
Команда что-то сделала, а чтобы увидеть, что произошло, нужно посмотреть (ls). Многие команды сами могут показывать, что происходит во время работы. Обычно для этого используется опция verbose (подробно) — вы часто будете натыкаться на эту опцию. Обычно она пишется как -v. То есть:
cp -v file1 newfile1
Тут мы видим, что файл скопировался.

Чтобы скопировать файл в директорию, используем:
cp -v file dir_a/newfile
Но вообще, если копировать в другую директорию, то необязательно указывать новое имя, можно просто написать:
cp -v file dir_a
Можно копировать из одной директории в другую:
cp -v dir_a/file dir_b/fileb
либо также не указывая нового имени:
cp -v dir_a/file dir_b
Ещё можно копировать из другой директории в текущую, используя ссылку для текущей директории – точку, как я говорил в прошлый раз. То есть:
cp -v dir_b/fileb .
если вы не хотите менять имя, либо, если вы хотите новое имя, то достаточно просто указать его:
cp -v dir_b/fileb filea
В общем, идея какая – для текущей директории путь не нужен, но нельзя просто написать:
cp dir_b/fileb
потому что синтаксис требует указать, куда файл нужно копировать. Если это не сделать, команда подумает, что недописана и просто выдаст ошибку. Ну и до этого мы использовали относительные пути, а так мы можем работать и с полными путями, например:
cp -v /home/user/test/file8 ~/temp/dir_c

Копирование скрытых файлов ничем не отличается от копирования обычных файлов – просто не забывайте указывать точку в начале названия файла, потому что это часть названия файла:
cp -v .file20 dir_c
Можно копировать несколько файлов разом, но тогда нужно копировать их в другую директорию:
cp -v file6 file7 file8 dir_d
Ну и по той же логике, указывая пути:
cp -v dir_a/file dir_b/fileb dir_d/file8 dir_e
Помните про регулярные выражения? Можем использовать и здесь. Допустим:
cp -v file10..13> dir_e
Кроме фигурных скобок, можно использовать и звёздочку – её часто называют wildcard – она означает, что подойдёт любое значение. Допустим, в директории dir_d есть три файла и я хочу скопировать все три:
cp -v dir_d/* dir_f
Тогда все файлы скопируются. Или, допустим, я хочу скопировать все файлы, названия которых начинаются с file1, а сюда подходят файл file1, file10, file11, file12 и т.д. Я пишу cp -v file1* dir_e и все подходящие файлы скопируются.

Давайте рассмотрим ещё пару ключей. Допустим, ключ -i – интерактивно. Что это значит? Когда вы копируете файл, если существует файл с таким названием в директории назначения, этот файл просто перезапишется. Это не всегда нас устраивает, иногда мы хотим лично решать, что перезаписывать, а что нет. Поэтому здесь нам поможет ключ -i. Допустим, cкопируем все файлы в директорию dir_d:
cp -i file* dir_d
Командная строка начнёт спрашивать, а что же делать с файлами, которые существуют там с тем же именем. Мы можем отказаться от перезаписывания файла, либо согласится. Обычно когда какая-то команда спрашивает вопрос, на который нужно ответить да/нет, то подходят ответы y, либо yes, n, либо no. Такой вариант – интерактивный — требует, чтобы вы лично сидели и решали, что делать с каждым совпадающим файлом.

Кстати, ключи можно использовать вместе. Допустим, мы знаем ключ -v и ключ -i. Мы можем использовать их вместе:
cp -v -i file newfile cp -iv file newfile cp -vi file newfile
Порядок – какой ключ вначале, какой потом – почти никогда не имеет значения.

Другой вариант – мы не хотим перезаписывать файлы – тогда сразу используем опцию -n. Например:
cp -vn file* dir_d
Тогда файлы в директории не перезапишутся. А если, допустим, мы хотим пропустить совпадающие файлы, а скопировать только файлы новее или отсутствующие файлы – тогда опция -u – update. То есть:
cp -vu file1* dir_e.

Помните про жёсткие ссылки? Мы можем вместо копирования создать жёсткую ссылку. Например:
cp -vl file filelink

Также мы можем копировать директории. Для этого используем опцию -r – рекурсивно. Допустим, я хочу скопировать директорию dir_a в директорию dir_b:
cp -vr dir_a dir_b
Эту опцию можно использовать не только с директориями, но и с файлами, никому от этого хуже не станет. Забегая вперёд, скажу, что в большинстве случаев правильнее копировать с опцией -a вместо -r, по сути -a это опции -r и -d. Вкратце, это позволяет сохранить права и владельца файла у копии файла.
cp -va dir_a dir_b
Как-то получилось, что я очень много времени уделил на копирование и лучше пока не перегружать вас информацией о других командах. Но то что мы сделали сегодня с одной командой, актуально и для большинства других команд – во многом ключи и подходы похожи.
© Авторские права 2021, GNU Linux Pro, CC-BY-SA-4.0. Ревизия b16e73a6 .