Копирование файлов и каталогов — одна из наиболее распространенных задач, которые вы будете выполнять при работе в командной строке. В 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
.
Если у вас есть вопросы, оставьте комментарий ниже.