Как копировать файлы и каталоги в Linux
Копирование файлов и каталогов — одна из наиболее распространенных задач, которые вы будете выполнять при работе в командной строке. В Linux есть несколько команд для копирования файлов, наиболее широко используемые инструменты — cp
и rsync
.
Обычной практикой является использование команды cp
для копирования файлов и rsync
для копирования каталогов.
Чтобы иметь возможность копировать файлы и каталоги, у вас должны быть как минимум права на чтение исходного файла и права записи в целевой каталог.
Содержание
Копирование файлов с помощью команды
cp
В операционных системах Linux и Unix команда cp
используется для копирования файлов и каталогов.
Самый простой вариант использования — скопировать файл в текущий рабочий каталог. Например, чтобы скопировать файл с именем file.txt
в файл с именем file_backup.txt
в текущем каталоге , вы должны выполнить следующую команду:
cp file. txt file_backup.txt
Если целевой файл существует, он будет перезаписан. Чтобы получить запрос на подтверждение перед перезаписью файлов, используйте параметр -i
.
cp -i file.txt file_backup.txt
По умолчанию при использовании команды cp
для копирования файла новый файл будет принадлежать пользователю, выполняющему команду. Используйте параметр -p
чтобы сохранить режим файла, владельца и временные метки :
cp -p file.txt file_backup.txt
Другой вариант, который может быть полезен, — это
. При использовании этой опции команда печатает, что делается:
cp -v file.txt file_backup.txt
'file.txt' -> 'file_backup.txt'
Скопируйте файл в каталог
Чтобы скопировать файл в каталог, укажите абсолютный или относительный путь к каталогу. Если целевой каталог не указан, файл копируется в текущий каталог.
В следующем примере мы file. txt
файл file.txt
в file.txt
/backup
:
cp file.txt /backup
При указании в качестве места назначения только имени каталога скопированный файл будет иметь то же имя, что и исходный файл.
Если вы хотите скопировать файл под другим именем, вам необходимо указать желаемое имя файла:
cp file.txt /backup/new_file.txt
Приведенная выше команда скопирует файл в указанный каталог как new_file.txt
.
Копировать несколько файлов
Чтобы скопировать сразу несколько файлов и каталогов, укажите имена исходных файлов и каталогов, за которыми следует каталог назначения в качестве последнего аргумента:
cp file.txt dir file1.txt file2.txt dir1
При копировании нескольких файлов местом назначения должен быть каталог.
Команда cp
также позволяет использовать сопоставление с образцом. Например, чтобы скопировать все файлы .png
из текущего каталога в каталог /backup
, вы должны использовать:
cp *. png /backup
Копирование каталогов с помощью команды
cp
Чтобы скопировать каталог, включая все его файлы и подкаталоги, используйте параметр -R
или -r
. В следующем примере мы копируем каталог Pictures
в Pictures_backup
:
cp -R Pictures Pictures_backup
Приведенная выше команда создаст каталог назначения и рекурсивно скопирует все файлы и подкаталоги из источника в каталог назначения.
Если целевой каталог уже существует, сам исходный каталог и его содержимое копируются в целевой каталог. Чтобы скопировать только файлы и подкаталоги, но не целевой каталог, используйте параметр -T
:
cp -RT Pictures Pictures_backup
Параметры, используемые при копировании файлов, также могут использоваться при копировании каталогов. Основное отличие состоит в том, что при копировании каталогов необходимо использовать параметр -R
.
Копирование файлов и каталогов с помощью команды
rsync
rsync
— это быстрая и универсальная утилита командной строки, которая синхронизирует файлы и каталоги между двумя местоположениями. Его можно использовать для копирования файлов в локальные и удаленные места.
rsync
включает множество параметров, которые контролируют каждый аспект его поведения.
Наиболее полезная опция -a
которая рекурсивно копирует каталоги, передает специальные и блочные устройства и сохраняет символические ссылки, время модификации, группу, владение и разрешения.
Чтобы скопировать один файл из одного места в другое, вы должны выполнить следующую команду:
rsync -a file.txt file_backup.txt
Если целевой файл существует, rsync
перезапишет его.
Эту же команду можно использовать для копирования каталога:
rsync -a /var/www/public_html/ /var/www/public_html_backup/
rsync
по-разному rsync
исходным каталогам, заканчивающимся косой чертой /
. Если вы добавите завершающую косую черту в исходный каталог, команда скопирует только содержимое исходного каталога в целевой каталог. Если косая черта в конце опущена, rsync
скопирует исходный каталог в целевой каталог. Самый безопасный вариант — всегда включать косую черту /
как в месте назначения, так и в источнике.
Чтобы узнать больше о rsync
прочтите следующие статьи:
- Как использовать Rsync для локальной и удаленной передачи и синхронизации данных
- Как исключить файлы и каталоги с помощью Rsync
Выводы
Мы показали вам, как копировать файлы и каталоги в системах на базе Linux и Unix, используя утилиты cp
и rsync
.
Если у вас есть вопросы, оставьте комментарий ниже.
Копирование файлов в Linux
Копирование файлов — одна из задач, наиболее часто возникающих перед пользователями персонального компьютера. Конечно, можно открыть файловый менеджер, войти в нужную папку и скопировать файл с помощью контекстного меню — тут не о чем говорить. Но в этой статье я хотел бы рассмотреть копирование файлов в Linux с помощью терминала.
Не всегда есть доступ к файловому менеджеру: из-за различных поломок графическая оболочка на домашнем компьютере может быть недоступна, а на серверах используется только консольный интерфейс. К тому же копирование файлов Ubuntu через терминал намного эффективнее, и вы сами в этом убедитесь. Сегодня мы рассмотрим не только копирование командой cp Linux, но и использование других утилит, таких как tar, rsync и find.
Содержание статьи:
Копирвоание файлов в Linux
1. Команда cp
Команда cp чаще всего используется для копирования файлов в Linux, она поставляется по умолчанию во всех дистрибутивах и может делать практически всё, что необходимо. Вы можете прочитать более подробно об этой команде в статье Команда cp в Linux. А в этой статье я приведу несколько базовых примеров использования этой команды.
Самый простой вариант копирование файла в папку. Например, для того чтобы скопировать некую картинку из домашней папки в подкаталог pictures выполните:
cp ~/pic. png ~/pictures/
Можно явно указать имя нового файла:
cp ~/pic.png ~/pictures/wallpaper.png
Для копирования папок нужно использовать опцию -r:
cp -r ~/reports ~/documents
После выполнения этой команды копирования папка reports будет скопирована в папку ~/documents. Если же вы хотите чтобы только содержимое папки reports было скопировано папку ~/documents используйте опцию -T:
cp -rT ~/reports ~/documents
Эта команда также поддерживает специальные символы замены * и ?. Например, следующая команда скопирует все файлы, начинающиеся на april:
cp ~/reports/april* ~/documents
В случае, если важно сохранить права доступа к файлу и его владельца, нужно использовать опцию -p:
cp -p ~/reports/march* ~/documents/
Для создания резервной копии файла конфигурации перед редактированием может быть очень полезно использовать синтаксис фигурных скобок Bash для того чтобы не писать полное имя нового файла. Например:
cp /etc/passwd{,.baсk}
В данном случае будет создан файл с таким же именем и расширением .back.
По умолчанию в cp не отображает прогресс копирования файла, что очень неудобно при работе с большими файлами. Но утилита progress позволяет посмотреть прогресс для всех утилит из пакета coerutils. Или же вы можете использовать команду rsync.
2. Команда rsync
Эта команда была разработана для резервного копирования файлов. Она позволяет выполнять не только копирование файлов, но и синхронизацию содержимого папок, а также поддерживает работу по сети с помощью SSH или по собственному протоколу. Более подробно о ней можно прочитать в этой статье.
Для того чтобы скопировать ту же картинку в папку ~/pictures используйте такую команду:
rsync ~/pic.png ~/pictures/
Указать имя для нового файла можно так же как и с cp. Ещё с помощью этой утилиты довольно удобно копировать больше файлы, потому что она умеет отображать прогресс копирования. Для этого нужно использовать опцию —progress:
rsync --progress ~/disk.img ~/images
Если вы хотите скопировать содержимое одной папки в другую, то нужно использовать опцию -r для копирования папок:
rsync -r ~/reports/ ~/documents/
Но обратите внимание, что для того чтобы копировать именно содержимое из папки источника, её название должно заканчиваться на слеш. Ну а для того чтобы скопировать саму папку не нужно добавлять в конце слеш:
rsync -r ~/reports ~/documents/
Если вы хотите сохранить права на файл и его владельца, то нужно использовать опцию -a:
rsync -a ~/reports ~/documents/
3. Команда xcp
В последнее время для многих утилит из набора CoreUtils появились аналоги, переписанные на Rust, которые лучше оптимизированы для современных систем и более дружелюбны к пользователю. В качестве такой альтернативы для cp можно использовать команду xcp. Для её установки надо использовать cargo:
cargo install xcp
Обычное копирование файла в другую папку работает аналогично команде cp. При этом утилита по умолчанию выводит красивый прогресс бар:
xcp ~/pic.png ~/pictures/
Также работает копирование файла с указанием нового имени:
xcp ~/pic.png ~/pictures/wallpaper.png
А вот механика копирования директорий была упрощена. По умолчанию содержимое директории источника, копируется в директорию назначения:
xcp -r ~/reports ~/documents/
Если же нужно скопировать папку ~/reports в ~/documents, то нужно использовать опцию -T:
xcp -rT ~/reports ~/documents/
Теперь вы знаете основные команды, которые могут помочь выполнить копирование файлов Linux. \/]*\/[0-9]*’ -exec cp {} ~/documents \;
Параметр regex здесь задает регулярное выражение. Обратите внимание, что регулярное выражение применяется не к имени файла, а ко всему пути. Параметром exec указывает, какую команду нужно выполнить для обнаруженных файлов. Символ {} — подставляет имя каждого файла. Аналогичным образом можно использовать другие способы фильтрации find.
Дополнительные способы копирования файлов в Linux
Linux интересен тем, что позволяет выполнять одно и то же действие различными путями. Копирование в Linux тоже может быть выполнено не только с помощью cp или других утилит для копирования. Вы можете скопировать файл используя операторы перенаправления ввода Bash и утилиту cat. Например:
cat report > ~/reports/report
Это может быть полезно для небольших текстовых файлов. Для копирования нескольких файлов можно использовать утилиту tar. Например, при переносе системных файлов в другой каталог, резервном копировании системных файлов и т.д. важно чтобы сохранились атрибуты, значения владельцев файлов и символические ссылки как они есть без какой-либо модификации. Можно составить туннель Bash, на входе которого tar будет паковать файлы отправлять на стандартный вывод, а на выходе распаковывать в нужную папку:
tar cf - /var | ( cd /mnt/var && tar xvf - )
Эта команда полностью копирует содержимое папки /var в папку /mnt/var. Так вы можете копировать папку Linux, причём абсолютно любую или даже целую операционную систему. Утилита cp тоже может справиться с такой задачей, если указать опцию -a.
Выводы
Теперь вы знаете, как выполняется копирование файлов Ubuntu и в Linux в целом. Как видите, в терминале это выполн!яется намного быстрее и эффективнее, чем с помощью графического интерфейса, если помнить нужные команды. Если у вас остались вопросы, спрашивайте в комментариях!
Команда копирования файла Linux [ Примеры команд cp ]
Как копировать файлы в операционных системах Linux? Как сделать вторую копию файла в оболочке Linux bash? Как я могу копировать файлы и каталоги в Linux?
Для копирования файлов и каталогов используйте команду cp в операционных системах Linux, UNIX и BSD. cp — это команда, введенная в оболочке Unix и Linux для копирования файла из одного места в другое, возможно, в другую файловую систему. Исходный файл остается неизменным, а новый файл может иметь такое же или другое имя.
Детали руководства | |
---|---|
Difficulty level | Easy |
Root privileges | No |
Requirements | Linux terminal |
Category | File Management |
OS compatibility | AIX • Alma • Alpine • Arch • BSD • Debian • Fedora • HP-UX • macOS • Mint • openSUSE • Pop!_OS • RHEL • Rocky • Stream • SUSE • Ubuntu • Unix • WSL |
Приблиз. время чтения | 4 минуты |
Реклама
Синтаксис команды cp
Для копирования файлов и каталогов с помощью команды cp используется следующий синтаксис:
$ cp SOURCE DEST
$ cp SOURCE DIRECTORY
$ cp SOURCE1 SOURCE2 SOURCE3 SOURCEn DIRECTORY
] $ cp [OPTESTION $ cp [ОПЦИЯ] SOURCE DIRECTORY
Где,
- В первом и втором синтаксисе вы копируете SOURCE файл в DEST файл или DIRECTORY.
- В третьем синтаксисе вы копируете несколько ИСТОЧНИКОВ (файлов) в DIRECTORY.
Примечание: Вам необходимо ввести команду cp после приглашения со знаком доллара ($). Это приглашение означает, что оболочка готова принять введенные вами команды. Не вводите знак доллара ($). Вам нужно открыть приложение «Терминал», чтобы использовать команду cp в Linux.
Примеры копирования файлов Linux
Чтобы создать копию файла с именем file. doc в текущем каталоге как newfile.doc, введите:
$ cp file.doc newfile.doc
$ ls -l *.doc
Примеры выходных данных:
-rw-r--r-- 1 veryv wheel 20 Mar 20 17:42 file.doc -rw-r--r-- 1 veryv wheel 20 20 марта 17:43 newfile.doc
Вы можете одновременно копировать несколько файлов в другой каталог. В этом примере скопируйте файлы с именами main.c, demo.h и lib.c в каталог с именем backup в текущем каталоге:
$ cp main.c demo.h lib.c backup
Если резервная копия находится в /home/project/ директория или папка, затем используйте полный путь следующим образом:
$ cp main.c demo.h lib.c /home/project/backup/
Скопировать файл в другой каталог
Чтобы скопировать файл из текущего каталога в другой каталог с именем /tmp/, введите:
$ cp имя_файла /tmp
$ ls /tmp/имя_файла
$ cd /tmp
$ ls
$ rm имя_файла
Подробный параметр
команда cp:
$ cp -v имя_файла. txt имя_файла.bak
$ cp -v foo.txt /tmp
Вот что я вижу:
foo.txt -> /tmp/foo.txt
Сохранить атрибуты файла
Чтобы скопировать файл в новый файл и сохранить изменения дату, время и список управления доступом, связанный с исходным файлом, введите:
$ cp -p file.txt /dir1/dir2/
$ cp -p filename /path/to/new/location/myfile
Эта опция ( -p ) заставляет cp сохранять следующие атрибуты каждого исходного файла в копии в соответствии с разрешениями:
- Время/дата изменения
- Время доступа
- Файловые флаги
- Файловый режим
- Идентификатор пользователя (UID)
- Идентификатор группы (GID)
- Списки контроля доступа (ACL)
- Расширенные атрибуты (EA)
Копирование всех файлов
Подстановочный знак в виде звезды представляет что угодно, т. е. все файлы. Чтобы скопировать все файлы из каталога в новый каталог, введите:
$ cp * /home/tom/backup
Подстановочный знак «звездочка» обозначает все файлы, имена которых заканчиваются расширением . doc. Итак, чтобы скопировать все файлы документов (*.doc) из каталога в новый каталог, введите:
$ cp *.doc /home/tom/backup
Рекурсивное копирование
Чтобы скопировать каталог, включая все его файлы и подкаталоги, в другой каталог, введите (рекурсивное копирование каталогов):
$ cp -R * /home/tom/backup
Команда копирования файла Linux с интерактивной опцией
Вы можете получить запрос перед перезаписью файла. Например, если нужно сделать копию файла с именем foo и назвать его bar, а файл с именем bar уже существует, перед заменой любых файлов с одинаковыми именами пользователю будет предложено следующее:
$ cp -i foo bar
Подробный вывод с помощью команды cp
Если вы передадите -v команде cp, она расскажет о том, что происходит. Это подробный вывод:
$ cp -v file1 file2
$ cp -avr dir2 /backups/
Вариант архива
Вы копируете каталоги/файлы рекурсивно, сохраняя указанные атрибуты, такие как режим файла, право собственности, метки времени, и все остальные возможные варианты следующим образом:
$ cp -dR --preserve=all ~/project/app1/ /nfs/backups/project/
## ИЛИ ##
$ cp -a ~/project/app1/ /nfs/backups/project/
Заключение
На этой странице описана команда cp, которая используется для копирования файлов в Linux и Unix-подобных системах. Для получения дополнительной информации см. справочные страницы с помощью команды help или команды man следующим образом:
$ man cp
$ man ls
$ cp --help
Команда Linux cp: Руководство
Команда Linux cp копирует файл или папку на компьютере. Вы можете перемещать один или несколько файлов и папок одновременно. Синтаксис для cp — это имя копируемого файла, за которым следует место, где должна находиться копия.
Копирование файлов и папок — это задача, которую почти каждый, кто работает с Linux, выполняет ежедневно. Но с помощью командной строки это не так просто, как перетащить файл в другое окно на вашем компьютере. Скорее вам нужно использовать команду cp для копирования файлов и папок.
Найдите подходящий учебный лагерь
- Career Karma подберет для вас лучшие технологические учебные курсы
- Доступ к эксклюзивным стипендиям и подготовительным курсам
Разработка программного обеспеченияДизайнОбработка и анализ данныхАналитика данныхUX-дизайнКибербезопасностьИмя
Фамилия
Электронная почта
Номер телефона
Продолжая, вы соглашаетесь с нашими Условиями обслуживания и Политикой конфиденциальности, а также соглашаетесь получать предложения и возможности от Career Karma по телефону, текстовым сообщениям и электронной почте.
Если вы хотите работать с Linux в любом качестве, недостаточно просто ознакомиться с тем, что такое кодирование и с языком программирования C, который составляет основу ядра Linux. Вам также необходимо освоить команду Linux cp. В этом руководстве мы обсудим, как использовать команду Linux cp для копирования файлов и папок в системах Linux.
Команда Linux cp: копирование файла
Команда cp Linux используется для копирования файлов и каталогов в другое место. Чтобы скопировать файл, укажите «cp», а затем имя файла для копирования. Затем укажите место, где должен появиться новый файл. Новый файл не обязательно должен иметь то же имя, что и тот, который вы копируете.
Давайте посмотрим на синтаксис команды cp в Linux:
cp [источник] [назначение]
«Источник» относится к файлу или папке, которые вы хотите переместить. «Назначение» — это целевой каталог, в который вы хотите переместить этот файл или папку.
Если и «источник», и «приемник» являются файлами, исходный файл будет скопирован в целевой файл. Если вы укажете несколько файлов или каталогов в качестве «источника», «назначением» должна быть папка, в которую можно переместить эти файлы и каталоги.
cp Linux Examples
Давайте рассмотрим несколько примеров, чтобы проиллюстрировать, как работает эта команда.
Команда cp в Linux: копирование файла в текущий каталог
Одним из наиболее распространенных применений команды cp в Linux является копирование файлов содержимого в текущий каталог. Использование Линукс ls , мы видим, что наша текущая папка содержит следующие файлы:
README.md app.sh конфиг/ мусорное ведро / app/
Предположим, мы хотим создать копию файла «app.sh» в файл с именем «__init__.sh». Мы могли бы сделать это с помощью этой команды:
cp app.sh __init__.sh
Когда мы запускаем эту команду, содержимое «app.sh» копируется в файл «__init__.sh». Поскольку файл «__init__.sh» не существует, он создается.
Если запустить ls мы видим, что наш обычный файл был создан на основе нашего предыдущего файла:
README. md app.sh __инит__.ш config/
Мы указали новое имя для нашего скопированного файла. Нам не нужно было копировать наш файл, а затем переименовывать его с помощью команды Linux mv.
Если указать то же имя, что и у уже существующего файла, существующий файл будет перезаписан. Действительно, команда cp может перезаписать существующий файл.
Команда cp в Linux: копирование файла в другой каталог
Мы также можем использовать команду Linux cp для копирования файла в другой каталог. Предположим, мы хотим создать копию нашего файла «__init__.sh» и сохранить его в каталоге «config». Мы можем сделать это с помощью этой команды:
cp __init__.sh config/
Мы можем использовать ls , чтобы увидеть содержимое нашей папки «config»:
ls config/
Эта команда возвращает:
__init__. py
Копия файла «__init__.sh» была создана в каталоге «config». Этот файл называется нашим «целевым файлом», как мы упоминали в примере с синтаксисом ранее.
Вы можете указать новое имя файла для копии создаваемого файла. Если вы хотите создать копию «README.md» в каталоге «config» и назвать ее «readme.txt», вы можете сделать это с помощью этой команды:
cp README.md config/readme.txt
Это похоже на то, как мы скопировали наш файл в последнем примере. Мы указали новое имя для нашего нового файла.
Как скопировать папку с помощью команды Linux cp
По умолчанию команда Linux cp не копирует каталог. Но вы все равно можете использовать cp для копирования папки. Для этого вам нужно передать флаг -R .
При этом папка и все ее содержимое будут скопированы в другую папку. Синтаксис этой команды:
cp -R [источник] [назначение]
Предположим, мы хотим скопировать папку «bin» в «bin_backup». Мы можем сделать это с помощью этой команды:
cp -R bin bin_backup
Если указанный вами каталог назначения существует, содержимое исходного каталога будет скопировано в каталог назначения. В противном случае будет создана новая папка со значением, которое вы указали для «назначения».
Копировать несколько файлов и папок
Команда Linux cp позволяет копировать несколько файлов и папок. Синтаксис для этого следующий:
cp [файл1] [файл2] … [назначение]
Предположим, мы хотим скопировать «app.sh» и «__init__.sh» в каталог с именем «bin». Мы могли бы сделать это с помощью этой команды:
cp app.sh __init__.sh bin/
Когда вы копируете несколько файлов, указанное место назначения должно быть папкой.
«Карьерная карма вошла в мою жизнь, когда я больше всего в ней нуждалась, и быстро помогла мне попасть на буткемп. Через два месяца после выпуска я нашла работу своей мечты, которая соответствовала моим ценностям и целям в жизни!»
Венера, инженер-программист Rockbot
В качестве альтернативы, если вы хотите скопировать несколько папок, вы должны указать папки в том же месте, где мы указали имена файлов выше.