Копирование, перемещение, создание и удаление файлов и каталогов
Частыми операциями в файловой структуре являются создание файлов и каталогов, их копирование, перемещение, переименование, а также удаление. Очевидно для подобных действий в командной оболочке Linux должны быть предусмотрены специальные команды.
Копирование файлов и каталогов
В Bash для копирования файлов используется команда cp (от «copy»), которой обычно передаются два аргумента:
- адрес с именем исходного файла,
- новый адрес с именем или просто адрес каталога, куда помещается копия.
Адрес может быть как абсолютным, так относительным. Если операции с файлами выполняются в текущем каталоге, то указывать адрес смысла нет. Пишется только имя исходного файла и имя копии. Поскольку файлов с одинаковыми именами и адресами быть не может, имя копии должно отличаться от имени исходного файла.
cp readme readme2
В данном случае создается копия файла readme , которая остается в той же директории под именем readme2 .
cp readme Desktop/
В папку Desktop копируется файл readme . Здесь текущим является родительский Desktop’у каталог. Имена копии и файла оригинала будут совпадать, а вот полные адреса – нет.
cp /home/irina/tux.png /mnt/D/pingvin.png
Здесь копируется файл из одного каталога в другой, используются абсолютные адреса, имя копии изменяется.
Если надо скопировать несколько разных файлов в один и тот же каталог, то после команды cp сначала перечисляются все файлы-оригиналы, а последним указывается каталог, куда помещаются копии. Понятно, что при таком групповом действии имена файлов изменить не удастся.
Чтобы скопировать каталог со всем его содержимым, необходимо использовать ключ -r команды cp :
cp -r ./letters ./oldletters
Перемещение и переименование
В 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 ключ -r здесь не нужен).
Групповое перемещение файлов работает также, как с командой cp : сначала указываются перемещаемые объекты, в конце каталог назначения.
Создание файлов и каталогов
Новые директории создаются командой mkdir. Например, чтобы создать каталог Work в текущей директории необходимо выполнить следующую команду:
mkdir Work
или
mkdir ./Work
Существует множество способов создания файлов, обычно они создаются какой-либо программой. Если все же возникает необходимость создать пустой файл, сделать это можно с помощью программы touch . В качестве аргумента ей передается имя создаваемого файла. Еще один способ – перенаправление вывода какой-либо команды в файл. Пример:
Здесь программа cal выводит календарь на текущий месяц, а поскольку стоит знак перенаправления вывода, то вывод команды будет записан в файл January , находящийся в папке Work .
Удаление файлов и каталогов
Для удаления файлов используется команда rm. Например:
Командой rmdir можно удалить пустой каталог. Если же каталог не пуст, следует использовать команду rm с ключом -r :

Вопросы
У вас в каталоге есть файлы с разными расширениями. Вам надо группу файлов, имеющих одно и тоже расширение, скопировать в другой каталог. Как это сделать одной командой?
Какой ключ надо использовать, чтобы при перемещении случайно не перезаписать уже имеющийся в каталоге файл с таким именем?
Курс с ответами к заданиям и дополнительными уроками в PDF
X Скрыть Наверх
Введение в Linux и Bash. Курс
Как осуществить рекурсивное копирование всех файлов из одного каталога в другой
Для копирования файлов используйте команду 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 есть несколько команд для копирования файлов, наиболее широко используемые инструменты — 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
Другой вариант, который может быть полезен, — это -v . При использовании этой опции команда печатает, что делается:
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 .
Если у вас есть вопросы, оставьте комментарий ниже.
Копирование файлов при помощи команды 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`, обратитесь к системному администратору или провайдеру услуг для получения помощи по установке команды.