Как копировать файлы и каталоги в Linux

Копирование файлов и каталогов в 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 в каталог /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 , ознакомьтесь со следующими статьями:

Заключение

Мы показали вам, как копировать файлы и каталоги в системах Linux и Unix с помощью утилит cp и rsync .

Если у вас есть вопросы, пожалуйста, оставьте комментарий ниже.

cp rsync терминал

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *