- Как копировать файлы и каталоги в Linux
- Копирование файлов с помощью команды cp
- Скопируйте файл в каталог
- Копировать несколько файлов
- Копирование каталогов с помощью команды cp
- Копирование файлов и каталогов с помощью команды rsync
- Выводы
- Как скопировать файл в Linux через терминал
- Команда для копирования «cp»
- Синтаксис и опции команды «cp»
- Команда cp
- Опции
Как копировать файлы и каталоги в 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.txt в 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
Чтобы скопировать каталог, включая все его файлы и подкаталоги, используйте параметр -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 прочтите следующие статьи:
Выводы
Мы показали вам, как копировать файлы и каталоги в системах на базе Linux и Unix, используя утилиты cp и rsync .
Если у вас есть вопросы, оставьте комментарий ниже.
Как скопировать файл в Linux через терминал
При работе с Linux через терминал не редко приходится создавать копии файлов или копировать файлы из одной папки в другую. Например, это могут быть файлы конфигураций, которые используются для настройки программ, или просто документы пользователя. В данной инструкции мы расскажем, как скопировать файл в Linux через терминал и какие команды для этого потребуются. Статья будет актуальной для любого дистрибутива Linux, например, Ubuntu Linux или Debian
Команда для копирования «cp»
Для копирования файлов в Linux через терминал используется команда « cp » (от англ. «copy»). Команда « cp » представляет собой утилиту командной строки для копирования файлов и каталогов. Она поддерживает перемещение одного или нескольких файлов или папок с параметрами для создания резервных копий и сохранения атрибутов.
В общем случае, для того чтобы скопировать файл в Linux через терминал достаточно ввести команду « cp » и передать ей имя исходного и нового файла. Например, для того чтобы скопировать « file.txt » в новый « newfile.txt » нужно выполнить следующую команду:
Обратите внимание , по умолчанию команда « cp » всегда будет перезаписывать уже имеющиеся файлы копируемыми, но это поведение можно изменить с помощью опций, которые мы рассмотрим во второй части статьи.
Таким же образом выполняется копирование файла в другую папку. Вводим команду « cp », указываем путь к файлу и затем каталог, в который его нужно скопировать. Например, для того чтобы скопировать « file.txt » в каталог « folder » нужно выполнить вот такую команду:
Естественно, если это необходимо, вы можете вводить полные пути к файлам и папкам, которые копируете командой « cp ». Например, копирование может выглядеть так:
cp ~/temp/newfile.txt ~/temp/folder/
Еще один пример копирования с указанием полного пути:
При необходимости можно скопировать сразу несколько файлов. В этом случае сначала нужно перечислить файлы, а потом указать папку, в которую их нужно скопировать. Например, для того чтобы скопировать « file.txt » и « newfile.txt » в каталог « folder » нужно выполнить следующее:
cp file.txt newfile.txt folder/
Аналогичное действие можно выполнить и с помощью маски. Например, для того чтобы скопировать все txt -документы в определенную директорию можно выполнить вот такую команду:
При копировании каталогов нужно добавлять параметр « -R », так как без этого « cp » будет выдавать ошибку. Поэтому, для копирования каталогов нужно ввести команду « cp -R » и указать исходный и новый каталог. Например, для того чтобы скопировать каталог « folder » в « newfolder » вам нужно выполнить вот такую команду:
Как и в случае с файлами, папки можно копировать сразу по несколько штук. Для этого нужно ввести «cp», перечислить копируемые папки и указать каталог назначения. Например, для того чтобы скопировать папки « folder » и « folder2 » в « newbigfolder » нужно выполнить следующее:
cp -R folder/ folder2/ newbigfolder/
Синтаксис и опции команды «cp»
Команда « cp » имеет множество опций, с помощью которых можно контролировать буквально все аспекты копирования файлов. Синтаксис команды выглядит следующим образом:
cp [опции] источник приемник
Самых опций у команды « cp » очень много, поэтому мы рассмотрим только самые простые и часто используемые. С остальными опциями вы сможете ознакомиться отдельно, выполнив в терминале Linux команду « man cp ».
-R , -r , --recursive Рекурсивное копирование каталогов. -b Создание резервной копии для всех файлов, которые могли быть перезаписаны или удалены при копировании. -d Копирование символических ссылок, а не файлов, на которые они ссылаются. -L Копировать файлы, а не символические ссылки. -l , --link Создание жестких ссылок, а не их копирование. -P, --no-dereference Не переходить по символическим ссылкам. -f, --force Если существующий файл назначения не может быть открыт, удалите его и повторите попытку. -i, --interactive Запрос перед перезаписью файлов. -n, --no-clobber Не перезаписывать файлы. -s, --symbolic-link Создавать символические ссылки вместо копирования файлов. -t, --target-directory=directory Обрабатывать место назначения как директорию. -T, --no-target-directory Обрабатывать место назначения как директорию. -u , --update Копировать только если исходный файл новее. -v , --verbose Вывод подробной информации.
Как уже было сказано, для выполнения команды копирования в терминале Linux сначала нужно ввести « cp », потом используемые опции, потом источник, и в конце место назначения. При этом опции из одной буквы можно соединять, например, вместо « -r -v » можно написать просто « -rv ».
Ниже мы рассмотрим несколько примеров копирования с опциями.
- cp -r folder/ newfolder/
Рекурсивное копирование каталогов. - cp -rv folder/ newfolder/
Рекурсивное копирование с выводом подробной информации. - cp -ri folder/ newfolder/
Рекурсивное копирование в интерактивном режиме с запросом на перезапись. - cp -rn folder/ newfolder/
Рекурсивное копирование без перезаписи. - cp -ru folder/ newfolder/
Рекурсивное копирование только новых файлов.
Команда cp
что_копируем — файл, несколько файлов, директория или несколько директорий, которые необходимо скопировать.
куда_копируем — название файла, в который выполняется копирование другого файла, или директория, в которую копируются исходные файлы или директории.
Опции
МЕТОД определяет, каким образом формируется имя резервной копии. МЕТОД может принимать значения:
- none или off — не делать резервных копий, даже если включена опция —backup
- numbered или t — имя резервной копии получит числовой индекс (пример: myfile.txt~2~ ).
- existing или nil — если в директории уже есть резервные копии с числовыми индексами, то использовать числовые индексы для новых резервных копий, во всех остальных случаях использовать метод simple .
- simple или never — делать обычные резервные копии (пример: myfile.txt~ ).
Скопировать содержимое специальных файлов (файлов устройств и FIFO) при рекурсивном копировании. Данную опцию использовать не рекомендуется.
Если файл назначения существует и не может быть открыт, то удалить его и попытаться снова (данная опция игнорируется, если используется опция -n ).
Сохранять у файлов атрибуты, указанные через запятую в списке СписокАтрибутов
Если возможно, то можно использовать дополнительные атрибуты: context , links , xattr , all
Формировать результирующее имя (результирующий путь) каждого копируемого файла с учетом полного пути, который указан для данного файла.
Например, при использовании команды cp —parents a/b/myfile dstdir , файл myfile будет скопирован в директорию dstdir/a/b . То есть будут созданы промежуточные директории.
Копировать директории. Используется рекурсивное копирование — копируются директории и все их содержимое.
Создавать или не создавать «легкую» клонированную копию файла, если данная функциональность поддерживается файловой системой.
КОГДА может принимать значения:
always — всегда создавать «легкую» копию файла. Создается ссылка на исходные данные. Фактического копирования данных не происходит. Блоки данных копируются только тогда, когда они изменяются.
auto — создается обычная полная копия.
Опция задает то, как будет выполняться копирование разреженных (sparse) файлов. Разреженный файл — это файл, в котором последовательности нулевых байтов (дыры) заменены на информацию об этих последовательностях. То есть в метаданных файла содержится список дыр.
КОГДА может принимать значения:
auto — (поведение по умолчанию) копировать разреженные файлы в разреженные файлы.
always — результирующий файл всегда разреженный, если в исходном есть достаточное количество нулевых последовательностей.
never — не делать результирующие файлы разреженными.
Изменить символ суффикса, который добавляется к именам резервных копий (при использовании опции —backup ). По умолчанию СУФФИКС равен значку тильды ~
Перемещать только если исходный файл новее, чем файл назначения или если файл-назначения отсутствует.