
Копирование файлов и каталогов — одна из самых распространённых задач, выполняемых при работе в командной строке. В 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 в каталог /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
Заключение
Мы показали вам, как копировать файлы и каталоги в системах Linux и Unix с помощью утилит cp и rsync .
Если у вас есть вопросы, пожалуйста, оставьте комментарий ниже.
Связанные руководства