Разное

Ubuntu копирование файлов: Копирование файлов в Linux

Содержание

Копирование файлов в Linux

Копирование файлов — одна из задач, наиболее часто возникающих перед пользователями персонального компьютера. Конечно, можно открыть файловый менеджер, войти в нужную папку и скопировать файл с помощью контекстного меню — тут не о чем говорить. Но в этой статье я хотел бы рассмотреть копирование файлов в Linux с помощью терминала.

Не всегда есть доступ к файловому менеджеру: из-за различных поломок графическая оболочка на домашнем компьютере может быть недоступна, а на серверах используется только консольный интерфейс. К тому же  копирование файлов Ubuntu через терминал намного эффективнее, и вы сами в этом убедитесь. Сегодня мы рассмотрим не только обычное копирование командой cp Linux, но и не совсем обычное: с помощью tar и find.

Содержание статьи:

Утилита копирования файлов cp

Название утилиты cp — это сокращение от Copy, что означает копировать. Утилита позволяет полностью копировать файлы и директории.

Синтаксис и опции

Общий синтаксис cp выглядит вот так:

$ cp опции файл-источник файл-приемник

Или:

$ cp опции файл-источник директория-приемник/

После выполнения команды файл-источник будет полностью перенесен в файл-приемник. Если в конце указан слэш, файл будет записан в заданную директорию с оригинальным именем.

Утилита имеет несколько интересных опций, которые могут сильно помочь при нестандартных задачах копирования, поэтому давайте их рассмотрим:

  • —attributes-only — не копировать содержимое файла, а только флаги доступа и владельца;
  • -f, —force — перезаписывать существующие файлы;
  • -i, —interactive — спрашивать, нужно ли перезаписывать существующие файлы;
  • -L — копировать не символические ссылки, а то, на что они указывают;
  • -n — не перезаписывать существующие файлы;
  • -P — не следовать символическим ссылкам;
  • -r — копировать папку Linux рекурсивно;
  • -s — не выполнять копирование файлов в Linux, а создавать символические ссылки;
  • -u — скопировать файл, только если он был изменён;
  • -x — не выходить за пределы этой файловой системы;
  • -p — сохранять владельца, временные метки и флаги доступа при копировании;
  • -t — считать файл-приемник директорией и копировать файл-источник в эту директорию.

Примеры копирования файлов в linux

Теперь, когда вы знаете основные опции, можно перейти к практике. Например, мы хотим скопировать некую картинку из домашней папки в подкаталог pictures:

cp ~/pic.png ~/pictures/

Или можем явно указать имя новой картинки:

cp ~/pic.png ~/pictures/wallpaper.png

Копирование папок осуществляется с помощью ключа -r:

cp  -R ~/папка ~/Документы/

После выполнения этой команды копирования ~/папка будет скопирована в папку ~/Документы. Главное, не забывайте поставить слэш в конце выражения или использовать опцию -t. Иначе папка ~/документы будет перезаписана.

По умолчанию команда cp Linux перезаписывает существующие файлы или папки, но можно заставить утилиту спрашивать, нужно ли перезаписывать каждый файл, если вы не уверены в правильности составления команды:

cp -i ~/test ~/Documents/test

Есть и противоположная опция -n, означающая «никогда не перезаписывать существующие файлы».

Опция -u полезна в следующем случае: вы знаете или предполагаете, что в директории, куда копируется файл, есть старая его версия, тогда оператор -u выполнит замену на новую версию:

cp -u ~/test ~/Documents/test

Сp также поддерживает специальные символы замены * и ?. Например, следующая команда скопирует все файлы, начинающиеся на test:

cp ~/test* ~/Документы/

Если нужно применить более сложные регулярные выражения, придётся комбинировать утилиту cp с find или egrep.

В случае, если важно сохранить права доступа к файлу и его владельца, нужно использовать опцию -p:

cp -p ~/test* ~/Документы/

Для упрощения использования команды можно применять синтаксис фигурных скобок. Например, чтобы создать резервную копию файла, выполните:

$ cp test.conf{,.bak}

Будет создан файл с таким же именем и расширением .bak

По умолчанию в cp не отображается прогресс копирования файла, что очень неудобно при работе с большими файлами, но его можно легко посмотреть с помощью утилиты cv.

Копирование файлов по регулярным выражениям в Linux

В утилите find можно применять различные условия и регулярные выражения для поиска файлов. Я уже немного писал о ней в статье как найти новые файлы в Linux. Мы можем скопировать все найденные с помощью find файлы, вызвав для каждого из них команду cp. Например, копируем все файлы в текущей директории, содержащие в имени только цифры:

find . -name [0-9] -exec cp {} ~/Документы \

Здесь точка указывает на текущую директорию, а параметр name задает регулярное выражение. Параметром exec мы задаем, какую команду нужно выполнить для обнаруженных файлов. Символ {} — подставляет имя каждого файла.

Но не find‘ом единым такое делается. То же самое можно получить, запросив список файлов директории в ls, отфильтровав его по регулярному выражению egrep и передав имена файлов по очереди в cp с помощью xargs:

ls -1 ~/ | egrep '[a-zA-Z]' | xargs cp -t ~/Папка/

Это не совсем удобный способ копировать файлы Linux, но всё же он возможен. Будут скопированы все файлы из домашней директории, содержащие в имени только английские буквы.

Копирование содержимого файлов в Linux

Вы можете не только копировать сами файлы, но и управлять их содержимым. Например, склеить несколько файлов в один или разрезать файл на несколько частей. Утилита cat используется для вывода содержимого файла, в комбинации с операторами перенаправления вывода Bash вы можете выполнять копирование содержимого файла Linux в другой файл. Например:

cat файл1 > файл2

Если файл был не пустым, он будет перезаписан. Или мы можем склеить два отдельных файла в один:

cat файл1 файл2 > файл3

Специальное копирование файлов в Linux с помощью tar

Linux интересен тем, что позволяет выполнять одно и то же действие различными путями. Копирование в Linux тоже может быть выполнено не только с помощью cp. При переносе системных файлов в другой каталог, резервном копировании системных файлов и т.д. важно чтобы сохранились атрибуты, значения владельцев файлов и символические ссылки как они есть без какой-либо модификации.

Утилита cp тоже может справиться с такой задачей? если указать опцию -p, но можно использовать утилиту архивации tar. Мы не будем создавать никаких файлов архивов, а построим туннель. Первая часть команды пакует файл и отправляет на стандартный вывод, а другая сразу же распаковывает в нужную папку:

tar cf - /var | ( cd /mnt/var && tar xvf - )

Здесь мы полностью копируем содержимое папки /var в папку /mnt/var. Так вы можете копировать папку Linux, причём абсолютно любую или даже целую операционную систему.

Выводы

Теперь вы знаете, как выполняется копирование файлов Ubuntu и в Linux в целом. Как видите, в терминале это выполняется намного быстрее и эффективнее, чем с помощью графического интерфейса, если помнить нужные команды. Если у вас остались вопросы, спрашивайте в комментариях!

Оцените статью:

Загрузка…

Как скопировать файлы с помощью команды ср в Linux

Это руководство покажет вам, как копировать файлы и каталоги в вашей системе с помощью командной строки Linux.

Команда cp используется для копирования файлов.

 

Как скопировать файл из одной директории в другую с помощью Linux

Синтаксис для копирования файла с одного места на другое выглядит следующим образом:

cp /source/path/name /target/path/name

 

Например представьте, что вы имеете следующую структуру папок:

  • home
    • andreyex
      • documents
        • folder_one
          • file_one
          • file_two
          • file_three
        • folder_two

Если вы хотите скопировать file_one из текущего местоположения в /home/andreyex/documents/folder_one в /home/andreyex/documents/folder_two, то вы должны ввести следующую команду в командной строке:

cp /home/andreyex/documents/folder_one/file_one /home/andreyex/documents/folder_two/file_one

 

Ярлыки вы можете сделать здесь.

Главная часть может быть заменена на тильду (~), что объясняется в этой статье. Это изменяет команду на:

cp ~/documents/folder_one/file_one ~/documents/folder_two/file_one

Вы можете просто опустить имя файла для цели, если вы собираетесь использовать то же имя файла

cp ~/documents/folder_one/file_one ~/documents/folder_two

 

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

cp ~/documents/folder_one/file_one

 

В качестве альтернативы, если вы уже в исходной папке вы можете просто указать имя файла в качестве источника следующим образом:

cp file_one ~/documents/folder_two

 

Как сделать резервную копию перед копированием файлов в Linux

В предыдущем разделе folder_one содержит файл с именем file_one и folder_two не делает. Представьте себе, что folder_two имеет файл с именем file_one и вы запустили следующую команду:

cp file_one ~/documents/folder_two

 

Приведенная выше команда перезапишет file_one, который в настоящее время находится в folder_two. Там нет подсказок, нет предупреждения и сообщения об ошибках, потому что, вы указали действительную команду.

Вы можете принять меры предосторожности при копировании файлов в Linux, для создания резервной копии файла, прежде чем он переписывает его. Просто используйте следующую команду:

cp -b /source/file /target/file

 

Например:

cp -b ~/documents/folder_one/file_one ~/documents/folder_two/file_one

 

В папке назначения теперь присутствует файл, который был скопирован и там будет также файл с тильдой (~) в конце, которая является резервной копией оригинального файла.

Вы можете изменить команду резервного копирования для работы в несколько ином виде, так что она создает пронумерованные резервные копии. Вы можете это сделать, если вы уже скопировали файлы и резервные копии уже существуют. Это является одной из форм контроля версий

cp --backup=numbered ~/documents/folder_one/file_one ~/documents/folder_two/file_one

 

Имя файла для резервных копий будет меняться: file_one.~1~, file_one.~2~ и т.д.

 

Как запросить перед перезаписью файлов при копировании в Linux

Если вы не хотите делать резервные копии файлов, лежащих в вашей файловой системе, но вы также хотите, убедиться, что команда копия не перезаписывает файл без разбора вы можете получить приглашение, чтобы показать вопросом, не хотите ли вы перезаписать.

Для этого используйте следующий синтаксис:

cp -i /source/file /target/file

 

Например:

cp -i ~/documents/folder_one/file_one ~/documents/folder_two/file_one

 

Сообщение будет выглядеть следующим образом :  cp: overwrite ‘./file1’?

Для перезаписи файла нажмите Y на клавиатуре или для отмены нажмите N или CTRL и C одновременно.

 

Что происходит при копировании символьных ссылок в Linux

Символическая ссылка немного походит на ярлык на рабочем столе. Содержимое символической ссылки является адрес физического файла.

Представьте себе, вы имеете следующую структуру папок:

  • home
    • andreyex
      • documents
        • folder_one
        • folder_two
          • file_one (symbolic links points to folder_one/file_one)
        • folder3

Посмотрите на следующую команду:

cp ~/documents/folder_one/file_one ~/documents/folder3/file_one

 

Здесь не должно быть ничего нового, так как он копирует физический файл из одной папки в другую.

Что происходит, однако, если скопировать символическую ссылку из folder_two в folder3?

cp ~/documents/folder_two/file_one ~/documents/folder3/file_one

 

Файл, который копируется в folder3 не будет символической ссылкой. Это на самом деле файл, на который указывает символическая ссылка, так на самом деле вы получите тот же результат, как если бы путем копирования file_one из folder_one.

Кстати вы можете получить тот же результат с помощью следующей команды:

cp -H ~/documents/folder_two/file_one ~/documents/folder3/file_one

 

Просто чтобы быть уверенным, хотя есть еще один переключатель, который абсолютно заставляет копировать файл, а не символическую ссылку:

cp -L ~/documents/folder_two/file_one ~/documents/folder3/file_one

 

Если вы хотите скопировать символическую ссылку необходимо указать следующую команду:

cp -d ~/documents/folder_two/file_one ~/documents/folder3/file_one

 

Чтобы символическую ссылку скопировать, а не физический файл с помощью следующей команды:

cp -P ~/documents/folder_two/file_one ~documents/folder3/file_one

 

Как создавать жесткие ссылки с помощью команды ср

В чем разница между символической ссылкой и жесткой связи?

Символическая ссылка – это ярлык для физического файла. Он не содержит больше, чем адрес на физический файл.

Жесткая связь, на основную ссылку на тот же физический файл, но с другим именем. Это почти как прозвище. Это отличный способ организации файлов, не занимая дальнейшего дискового пространства.

Это руководство расскажет вам все, что вам нужно знать о жестких ссылках .

Вы можете создать жесткую ссылку с помощью команды ср.

cp -l ~/source/file ~/target/file

 

В качестве примера того, почему вы могли бы использовать жесткую ссылку учесть, что у вас есть папка под названием видео и в этой папке видео у вас есть действительно большой видео файл с именем honeymoon_video.mp4. Теперь представьте, что вы также хотите, чтобы видео быть известным как barbados_video.mp4, потому что он также имеет кадры Барбадоса.

Вы можете просто скопировать файл и дать ему новое имя, но это означает, что вы увеличиваете в два раза больше дискового пространства для того, что, по существу, то же самое видео.

Вы могли бы вместо того, чтобы создать символическую ссылку с именем barbados_video.mp4, которая указывает на файл honeymoon_video.mp4. Это будет работать хорошо, но если кто-то удалил honeymoon_video.mp4 вы остались бы со ссылкой и ничего другого и связь по-прежнему занимает дисковое пространство.

Единственное отличие состоит в том, что они содержат разное количество индексных дескрипторов. (уникальные идентификаторы). Удаление файла honeymoon_video.mp4 не удаляет файл, но только снижает количество для этого файла на 1. Файл будет удален только если все ссылки на этот файл будут удалены.

Чтобы создать ссылку вы могли бы сделать что-то вроде этого:

cp -l /videos/honeymoon_video.mp4 /videos/barbados_video.mp4

 

Как создать символические ссылки с помощью команды ср

Если вы хотите создать символическую ссылку вместо жесткой ссылки вы можете использовать следующую команду:

cp -s /source/file /target/file

 

Опять же я бы лично вообще используют команду ln -s, но вместо этого работает хорошо.

 

Как скопировать файлы, если они новее

Если вы хотите скопировать файлы в папку, но только с перезаписью файлов назначения, если исходный файл новее, то вы можете использовать следующую команду:

cp -u /source/file /target/file

 

Стоит отметить, что если файл не существует на целевой стороне, то копия будет иметь место.

 

Как скопировать несколько файлов

Вы можете предоставить более одного исходного файла внутри команды копирования следующим образом:

cp /source/file_one /source/file_two /source/file_three /target

 

Приведенная выше команда будет копировать file_one, file_two и file_three в целевую папку.

Если файлы соответствуют определенному шаблону, то вы можете также использовать групповые символы следующим образом:

cp /home/andreyex/music/*.mp3 /home/andreyex/music2

 

Приведенная выше команда будет копировать все файлы с расширением .mp3 в папку music2.

 

Как скопировать папки

Копирование папок такое же, как копирование файлов.

Например представьте, что вы имеете следующую структуру папок:

Представьте, что вы хотите переместить папку folder_one в папку folder_two следующим образом:

Вы можете использовать следующую команду:

cp -r /home/andreyex/documents/folder_one /home/andreyex/documents/folder_two

 

Кроме того, можно использовать следующую команду:

cp -R /home/andreyex/documents/folder_one /home/andreyex/documents/folder_two

 

Это копирует содержимое folder_one, а также любые суб-каталоги и файлы в пределах подкаталогов.

 

Резюме

Это руководство дало вам инструменты требующиеся для копирования файлов в Linux. Для всего остального вы можете использовать команду Linux man.

man cp

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Как скопировать файл в Linux через терминал (Ubuntu, Debian и т.д.)

При работе с Linux через терминал не редко приходится создавать копии файлов или копировать файлы из одной папки в другую. Например, это могут быть файлы конфигураций, которые используются для настройки программ, или просто документы пользователя. В данной инструкции мы расскажем, как скопировать файл в Linux через терминал и какие команды для этого потребуются. Статья будет актуальной для любого дистрибутива Linux, например, Ubuntu Linux или Debian

Команда для копирования «cp»

Для копирования файлов в Linux через терминал используется команда «cp» (от англ. «copy»). Команда «cp» представляет собой утилиту командной строки для копирования файлов и каталогов. Она поддерживает перемещение одного или нескольких файлов или папок с параметрами для создания резервных копий и сохранения атрибутов.

В общем случае, для того чтобы скопировать файл в Linux через терминал достаточно ввести команду «cp» и передать ей имя исходного и нового файла. Например, для того чтобы скопировать «file.txt» в новый «newfile.txt» нужно выполнить следующую команду:

cp file.txt newfile.txt

Обратите внимание, по умолчанию команда «cp» всегда будет перезаписывать уже имеющиеся файлы копируемыми, но это поведение можно изменить с помощью опций, которые мы рассмотрим во второй части статьи.

Таким же образом выполняется копирование файла в другую папку. Вводим команду «cp», указываем путь к файлу и затем каталог, в который его нужно скопировать. Например, для того чтобы скопировать «file.txt» в каталог «folder» нужно выполнить вот такую команду:

cp file.txt folder/

Естественно, если это необходимо, вы можете вводить полные пути к файлам и папкам, которые копируете командой «cp». Например, копирование может выглядеть так:

cp ~/temp/newfile.txt ~/temp/folder/

Еще один пример копирования с указанием полного пути:

При необходимости можно скопировать сразу несколько файлов. В этом случае сначала нужно перечислить файлы, а потом указать папку, в которую их нужно скопировать. Например, для того чтобы скопировать «file.txt» и «newfile.txt» в каталог «folder» нужно выполнить следующее:

cp file.txt newfile.txt folder/

Аналогичное действие можно выполнить и с помощью маски. Например, для того чтобы скопировать все txt-документы в определенную директорию можно выполнить вот такую команду:

cp *.txt folder/

При копировании каталогов нужно добавлять параметр «-R», так как без этого «cp» будет выдавать ошибку. Поэтому, для копирования каталогов нужно ввести команду «cp -R» и указать исходный и новый каталог. Например, для того чтобы скопировать каталог «folder» в «newfolder» вам нужно выполнить вот такую команду:

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/
    Рекурсивное копирование только новых файлов.

Сохраните статью:

Посмотрите также:

Копирование файлов Linux — команда cp

Задачи по копированию файлов из одного места в другое возникают у пользователей чаще всего, скопировать нужные объекты можно через менеджер файлов, в котором следует найти нужную директорию и после воспользоваться контекстным меню. Однако есть гораздо более простые способы, в этой статье речь как раз пойдет о них, точнее о копировании файлов в Линукс из консоли.

Знание о команде cp полезны, ведь файловый менеджер может некорректно работать из-за проблем с графической оболочкой. Серверные компьютеры вообще управляются только через консоль. Перемещать файлы с помощью терминала очень удобно, в этом может убедиться каждый пользователь. Скопировать файлы можно как с помощью утилиты cp, так же используя tar и find.

Синтаксис

Рассмотрим синтаксис утилиты.

cp [параметр] [что копировать]  [куда купировать]

Как только команда будет активирована, отправляемый файл перенесется в место для приема, при указании на конце файла значка «/» он также будет перенесен, но с новым именем.

Основные параметры:

  • —attributes-only – переместить не сам файл, а только данные пользователя и флаги доступа;
  • -f —force – вместо старых данных записать новые;
  • -i —interactive – спросить о необходимости переписывать старую информацию;
  • -L – создать копию не ссылок-символов, а того, что находится по этим ссылкам;
  • -n – оставить старые файлы на их месте;
  • -P – игнорировать ссылки-символы;
  • -r – скопировать данные Linux используя рекурсию;
  • -s – ничего не копировать, просто создать ссылки-символы;
  • -u – копировать файл, но при условии, что он уже был изменен;
  • -x – проводить все действия только внутри одной системы файлов;
  • -p – во время копирования сохранить все информацию о файле;
  • -t – команда дает возможность считать файл для приема директорией, и отправлять в него нужный объект;

Примеры

Для первого примера, скопируем файл /root/katalog/dokument в папку, которая называется «newpapka».

cp /root/katalog/dokument /root/newpapka

Копирование нескольких файлов в одну директорию.

Cкопируем «dokument» и «file» в каталог «newpapka».

cp /root/katalog/dokument /root/katalog/file /root/newpapka

Часто бывает так, когда копируешь несколько файлов, желательно выводить информацию, что происходит. В этом поможет опция «-v».

cp -v /root/katalog/dokument /root/katalog/file /root/newpapka

Команда cp устроена так, что все отправляемые с ее помощью файлы перезаписываются, однако программу можно заставить спрашивать пользователя о том, нужно ли перезаписывать старые данные, для этого есть специальная команда:

cp -i /root/katalog/dokument /root/newpapka

Существует альтернатива данной функции, благодаря запросу «-n» можно сказать программе, чтобы она вообще не перезаписывала файлы.

Данная возможность будет полезна при следующей ситуации: пользователю известно, что в определенном месте для копирования уже содержится тот же файл, но с устаревшей версией, а с помощью функции «-u» можно безболезненно перезаписать старые данные:

cp -u /root/katalog/dokument /root/newpapka

Скопировать директорию

Для копирование папки со всем ее содержимом необходимо использовать параметр -r.

cp -r /root/katalog /root/newpapka

ВАЖНО! Как видно из скриншота, данный способ скопирует всю папку и поместит ее в новую директорию.

Если нужно только сделать копию всех файлов без папки, то опция -r не подойдет.

Можно сделать так:

cp /root/katalog/* /root/newpapka

Как видно из примера выше, команда cp работает со знаками «*» и «?», следующий запрос, займется копированием всех файлов, чье название начинается с new:

cp /root/katalog/new* /root/newpapka

Для ввода команд быстрее есть возможность применять фигурные скобки, чтобы заиметь копию файла для резерва следует ввести данную команду:

cp test.conf{,.bak}

С ее помощью появится резервный файл, который имеет расширение, указанное в скобках.

Одним из неудобств функции cp является то, что она не показывает количество скопированной информации, это мешает, особенно когда приходится работать с тяжелыми файлами. Полоску прогресса можно увидеть, если использовать функцию cv.

Регулярные выражения

Для выполнения других, более сложных функций, придется использовать вместе с cp такие утилиты find и egrep.

С помощью утилиты find есть возможность использовать команды для выявления расположения файлов. Пользователь может найти данные с использованием find, а затем скопировать их, используя функция для копирования.

Вот пример, в нем проводится копирование файлов, которые содержат цифры от 1 до 5:

find /root -name [1-5] -exec cp {} /root/newpapka \;

ВАЖНО! Обязательно в конце команды нужно ввести «;», в противном случаи будет ошибка — exec аргумент не задан.

Здесь:

  • /root — каталог где производить поиск.
  • -name — критерии поиска.
  • [1-5] — что искать, в данном случаи от одного до пяти.
  • -exec — аргумент, который говорит, что нужно запустить команду.
  • {} — подставляет имя каждого файла.

Сделать то же самое можно и не прибегая к find, можно обратиться к утилите ls, выбрать нужные файлы, используя регулярные выражения egrep, затем отправить их под контроль cp, применяя при этом xargs:

ls -1 /root | egrep '[1-5]' | xargs cp -t /root/newpapka

Данный способ не отличается особым удобством, однако использовать его можно. При работе с ним начнется копирование файлов из основной директории, чьи имена содержат лишь цифры от 1 до 5.

Копирование при помощи перенаправления вывода

В операционной системе Linux есть специальный символ «>», который означает перенаправление вывода.

Благодаря этой возможности можно не только переносить файлы, но и работать с их составляющими. Есть возможность соединить несколько файлов или наоборот разрезать их.

Используя cat можно выводить на экран основные данные файла, а затем, используя bash, пользователь сможет переносить составляющие файла из одного места в другое.

Вот пример:

cat file1 > newfile

TAR

Одной из особенностью Linux является то, что в нем одно и то же действие можно выполнять, используя несколько различных команд.

Скопировать данные можно не только с помощью cp. Когда важные системные файлы отправляются в другое место или происходит создание резервных копий данных, нужно, чтобы такие вещи как атрибуты, владельцы данных, ссылки-символы были сохранены без каких-либо изменений.

С помощью cp так делать можно, однако на помощь придется позвать утилиту tar, чтобы она начала работу следует написать в cp «-p».

В качестве примера будет приведен туннель – одна часть запроса архивирует файл и отправляет его, другая – разархивирует и отправляет в нужное место:

tar cf - /lfc | ( cd /epl/lfc && tar xvf - )

С помощью данной команды все из папки /lfc отправляется в папку /epl/lfc. Таким способом можно скопировать любую информацию с компьютера, даже если это операционная система.

Итог

Теперь почти каждый пользователь знает, как копировать файлы в ОС. С помощью терминала делать это можно быстро, главное – запомнить все нужные команды.

Задачи по копированию файлов из одного места в другое возникают у пользователей чаще всего, скопировать нужные объекты можно через менеджер файлов, в котором

Название утилиты cp — это сокращение от Copy, что означает копировать. Утилита позволяет полностью копировать файлы и директории.

СИНТАКСИС И ОПЦИИ

Общий синтаксис cp выглядит вот так:

$ cp опции файл-источник файл-приемник

Или:

$ cp опции файл-источник директория-приемник/

После выполнения команды файл-источник будет полностью перенесен в файл-приемник. Если в конце указан слэш, файл будет записан в заданную директорию с оригинальным именем.

Утилита имеет несколько интересных опций, которые могут сильно помочь при нестандартных задачах копирования, поэтому давайте их рассмотрим:

  • —attributes-only — не копировать содержимое файла, а только флаги доступа и владельца;
  • -f, —force — перезаписывать существующие файлы;
  • -i, —interactive — спрашивать, нужно ли перезаписывать существующие файлы;
  • -L — копировать несимволические ссылки, а то на что они указывают;
  • -n — не перезаписывать существующие файлы;
  • -P — не следовать символическим ссылкам;
  • -r — копировать папку linux рекурсивно;
  • -s — не выполнять копирование файлов в linux, а создавать символические ссылки;
  • -u — скопировать файл, только если он был изменен;
  • -x — не выходить за пределы этой файловой системы;
  • -p — сохранять владельца, временные метки и флаги доступа при копировании;
  • -t — считать файл-приемник директорией и копировать файл-источник в эту директорию.

Как скопировать файл из одной директории в другую с помощью Linux

Синтаксис для копирования файла с одного места на другое выглядит следующим образом:

cp /source/path/name /target/path/name

Например представьте, что вы имеете следующую структуру папок:

  • home
    • andreyex
      • documents
        • folder_one
          • file_one
          • file_two
          • file_three
        • folder_two

Если вы хотите скопировать file_one из текущего местоположения в /home/andreyex/documents/folder_one в /home/andreyex/documents/folder_two, то вы должны ввести следующую команду в командной строке:

cp /home/andreyex/documents/folder_one/file_one /home/andreyex/documents/folder_two/file_one

Ярлыки вы можете сделать здесь.

Главная часть может быть заменена на тильду (~), что объясняется в этой статье. Это изменяет команду на:

cp ~/documents/folder_one/file_one ~/documents/folder_two/file_one

Вы можете просто опустить имя файла для цели, если вы собираетесь использовать то же имя файла

cp ~/documents/folder_one/file_one ~/documents/folder_two

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

cp ~/documents/folder_one/file_one

В качестве альтернативы, если вы уже в исходной папке вы можете просто указать имя файла в качестве источника следующим образом:

cp file_one ~/documents/folder_two

Как сделать резервную копию перед копированием файлов в Linux

В предыдущем разделе folder_one содержит файл с именем file_one и folder_two не делает. Представьте себе, что folder_two имеет файл с именем file_one и вы запустили следующую команду:

cp file_one ~/documents/folder_two

Приведенная выше команда перезапишет file_one, который в настоящее время находится в folder_two. Там нет подсказок, нет предупреждения и сообщения об ошибках, потому что, вы указали действительную команду.

Вы можете принять меры предосторожности при копировании файлов в Linux, для создания резервной копии файла, прежде чем он переписывает его. Просто используйте следующую команду:

cp -b /source/file /target/file

Например:

cp -b ~/documents/folder_one/file_one ~/documents/folder_two/file_one

В папке назначения теперь присутствует файл, который был скопирован и там будет также файл с тильдой (~) в конце, которая является резервной копией оригинального файла.

Вы можете изменить команду резервного копирования для работы в несколько ином виде, так что она создает пронумерованные резервные копии. Вы можете это сделать, если вы уже скопировали файлы и резервные копии уже существуют. Это является одной из форм контроля версий

cp —backup=numbered ~/documents/folder_one/file_one ~/documents/folder_two/file_one

Имя файла для резервных копий будет меняться: file_one.~1~, file_one.~2~ и т.д.

Как запросить перед перезаписью файлов при копировании в Linux

Если вы не хотите делать резервные копии файлов, лежащих в вашей файловой системе, но вы также хотите, убедиться, что команда копия не перезаписывает файл без разбора вы можете получить приглашение, чтобы показать вопросом, не хотите ли вы перезаписать.

Для этого используйте следующий синтаксис:

cp -i /source/file /target/file

Например:

cp -i ~/documents/folder_one/file_one ~/documents/folder_two/file_one

Сообщение будет выглядеть следующим образом :  cp: overwrite ‘./file1’?

Для перезаписи файла нажмите Y на клавиатуре или для отмены нажмите N или CTRL и C одновременно.

Что происходит при копировании символьных ссылок в Linux

Символическая ссылка немного походит на ярлык на рабочем столе. Содержимое символической ссылки является адрес физического файла.

Представьте себе, вы имеете следующую структуру папок:

  • home
    • andreyex
      • documents
        • folder_one
        • folder_two
          • file_one (symbolic links points to folder_one/file_one)
        • folder3

Посмотрите на следующую команду:

cp ~/documents/folder_one/file_one ~/documents/folder3/file_one

Здесь не должно быть ничего нового, так как он копирует физический файл из одной папки в другую.

Что происходит, однако, если скопировать символическую ссылку из folder_two в folder3?

cp ~/documents/folder_two/file_one ~/documents/folder3/file_one

Файл, который копируется в folder3 не будет символической ссылкой. Это на самом деле файл, на который указывает символическая ссылка, так на самом деле вы получите тот же результат, как если бы путем копирования file_one из folder_one.

Кстати вы можете получить тот же результат с помощью следующей команды:

cp -H ~/documents/folder_two/file_one ~/documents/folder3/file_one

Просто чтобы быть уверенным, хотя есть еще один переключатель, который абсолютно заставляет копировать файл, а не символическую ссылку:

cp -L ~/documents/folder_two/file_one ~/documents/folder3/file_one

Если вы хотите скопировать символическую ссылку необходимо указать следующую команду:

cp -d ~/documents/folder_two/file_one ~/documents/folder3/file_one

Чтобы символическую ссылку скопировать, а не физический файл с помощью следующей команды:

cp -P ~/documents/folder_two/file_one ~documents/folder3/file_one

Как создавать жесткие ссылки с помощью команды ср

В чем разница между символической ссылкой и жесткой связи?

Символическая ссылка – это ярлык для физического файла. Он не содержит больше, чем адрес на физический файл.

Жесткая связь, на основную ссылку на тот же физический файл, но с другим именем. Это почти как прозвище. Это отличный способ организации файлов, не занимая дальнейшего дискового пространства.

Это руководство расскажет вам все, что вам нужно знать о жестких ссылках .

Вы можете создать жесткую ссылку с помощью команды ср.

cp -l ~/source/file ~/target/file

В качестве примера того, почему вы могли бы использовать жесткую ссылку учесть, что у вас есть папка под названием видео и в этой папке видео у вас есть действительно большой видео файл с именем honeymoon_video.mp4. Теперь представьте, что вы также хотите, чтобы видео быть известным как barbados_video.mp4, потому что он также имеет кадры Барбадоса.

Вы можете просто скопировать файл и дать ему новое имя, но это означает, что вы увеличиваете в два раза больше дискового пространства для того, что, по существу, то же самое видео.

Вы могли бы вместо того, чтобы создать символическую ссылку с именем barbados_video.mp4, которая указывает на файл honeymoon_video.mp4. Это будет работать хорошо, но если кто-то удалил honeymoon_video.mp4 вы остались бы со ссылкой и ничего другого и связь по-прежнему занимает дисковое пространство.

Единственное отличие состоит в том, что они содержат разное количество индексных дескрипторов. (уникальные идентификаторы). Удаление файла honeymoon_video.mp4 не удаляет файл, но только снижает количество для этого файла на 1. Файл будет удален только если все ссылки на этот файл будут удалены.

Чтобы создать ссылку вы могли бы сделать что-то вроде этого:

cp -l /videos/honeymoon_video.mp4 /videos/barbados_video.mp4

Как создать символические ссылки с помощью команды ср

Если вы хотите создать символическую ссылку вместо жесткой ссылки вы можете использовать следующую команду:

cp -s /source/file /target/file

Опять же я бы лично вообще используют команду ln -s, но вместо этого работает хорошо.

Как скопировать файлы, если они новее

Если вы хотите скопировать файлы в папку, но только с перезаписью файлов назначения, если исходный файл новее, то вы можете использовать следующую команду:

cp -u /source/file /target/file

Стоит отметить, что если файл не существует на целевой стороне, то копия будет иметь место.

2. Как скопировать несколько файлов

Если вы хотите скопировать несколько файлов одновременно в новое место, вы можете сделать это следующим образом:

cp file1 file2 file3 fileN target_directory

Эта команда скопирует все указанные файлы в целевой каталог. Если в целевом каталоге есть файл(ы), соответствующий имени исходного файла (ов), он будет перезаписан.

3. Несколько способов обработки перезаписи при копировании файлов.

Вероятно, вы не всегда хотите, чтобы ваши существующие файлы целей были перезаписаны, и это абсолютно логично.

Чтобы предотвратить перезапись существующих файлов, вы можете использовать опцию -n. Таким образом, cp выиграл ‘перезаписать существующие файлы.

cp -n source_file target_directory

Но, возможно, вы хотите перезаписать некоторые файлы. Вы можете использовать интерактивную опцию -i, и она спросит вас, хотите ли вы перезаписать существующие файлы.

cp -i source_file target_directory cp: overwrite ‘target_directory/source_file’?

Вы можете ввести y для перезаписи существующего файла или n, чтобы не переписать его.

Существует также возможность создания автоматических резервных копий. Если вы используете опцию -b с командой cp, она перезапишет существующие файлы, но до этого она создаст резервную копию перезаписанных файлов.

cp -b file.txt target_dir / file.txt ls target_dir file.txt file.txt ~

Резервная копия файла заканчивается на ~.

Вы также можете использовать параметр обновления -u, когда имеете дело с перезаписью. С параметром -u исходные файлы будут скопированы только в новое место, если исходный файл более новый, чем существующий, или если он не существует в целевом каталоге.

Подвести итоги:

  • -i: Подтвердить перед перезаписью
  • -n: Нет перезаписи
  • -b: Перезапись с резервным копированием
  • -u: Перезаписать, если целевой файл устарел или не существует

Как скопировать папки

Копирование папок такое же, как копирование файлов.

Например представьте, что вы имеете следующую структуру папок:

Представьте, что вы хотите переместить папку folder_one в папку folder_two следующим образом:

Вы можете использовать следующую команду:

cp -r /home/andreyex/documents/folder_one /home/andreyex/documents/folder_two

Кроме того, можно использовать следующую команду:

cp -R /home/andreyex/documents/folder_one /home/andreyex/documents/folder_two

Это копирует содержимое folder_one, а также любые суб-каталоги и файлы в пределах подкаталогов.

Копирование файлов и каталогов

В Bash для копирования файлов используется команда cp (от «copy»), которой обычно передаются два аргумента:

  1. адрес с именем исходного файла,

  2. новый адрес с именем или просто адрес каталога, куда помещается копия.

Адрес может быть как абсолютным, так относительным. Если операции с файлами выполняются в текущем каталоге, то указывать адрес смысла нет. Пишется только имя исходного файла и имя копии. Поскольку файлов с одинаковыми именами и адресами быть не может, имя копии должно отличаться от имени исходного файла.

Рассмотрим примеры.

cp readme readme2

В данном случае создается копия файла readme, которая остается в той же директории под именем readme2.

cp readme Desktop/

В папку Desktop копируется файл readme. Здесь текущим является родительский Desktop’у каталог. Имена копии и файла оригинала будут совпадать, а вот полные адреса – нет.

cp/home/irina/tux.png /mnt/D/pingvin.png

Здесь копируется файл из одного каталога в другой, используются абсолютные адреса, имя копии изменяется.

Если надо скопировать несколько разных файлов в один и тот же каталог, то после команды cd сначала перечисляются все файлы-оригиналы, а последним указывается каталог, куда помещаются копии. Понятно, что при таком групповом действии имена файлов изменить нельзя.

Чтобы скопировать каталог со всем его содержимым, необходимо использовать ключ -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.

Создание файлов и каталогов

Новые директории создаются командой mkdir. Например, чтобы создать каталог Work в текущей директории необходимо выполнить следующую команду:

mkdir Work
или
mkdir ./Work

Существует множество способов создания файлов, обычно они создаются какой-либо программой. Если все же возникает необходимость создать пустой файл, сделать это можно с помощью программы touch. В качестве аргумента ей передается имя создаваемого файла. Еще один способ – перенаправление вывода какой-либо команды в файл. Пример:

cal> ./Work/January

Здесь программа cal выводит календарь на текущий месяц, а поскольку стоит знак перенаправления вывода, то вывод команды будет записан в файл January, находящийся в папке Work.

Удаление файлов и каталогов

Для удаления файлов используется команда rm. Например:

rm ghost.png

Командой rmdir можно удалить пустой каталог. Если же каталог не пуст, следует использовать команду rm с ключом -r:

Вопросы

У вас в каталоге есть файлы с разными расширениями. Вам надо группу файлов, имеющих одно и тоже расширение, скопировать в другой каталог. Как это сделать одной командой?

Какой ключ надо использовать, чтобы при перемещении случайно не перезаписать уже имеющийся в каталоге файл с таким именем?

Курс с ответами к заданиям и дополнительными уроками:
android-приложение, pdf-версия.

6. Как скопировать несколько каталогов

Вы также можете скопировать несколько каталогов одновременно с помощью команды cp в Linux.

Просто используйте его так же, как и для одного каталога.

cp -r source_dir1 source_dir2 source_dir3 target_dir

Это всегда последний аргумент в команде, который принимается как целевой каталог.

Если вы хотите скопировать только содержимое нескольких каталогов одновременно, вы также можете это сделать:

cp -r source_dir1 /. source_dir2 /. source_dir3 /. target_dir

Фактически, вы можете смешивать каталоги, их содержимое и файлы в целом.

cp -r source_dir1 source_dir2 /. source_file target_dirСоветВы можете использовать подробный режим с опцией -v, чтобы посмотреть, какие файлы копируются.

7. Как сохранить атрибуты при копировании

Когда вы копируете файл в новое место, его атрибуты, такие как права доступа к файлам и временные метки файла, изменяются.

Если вы хотите сохранить атрибуты исходного файла, вы можете скопировать файлы с помощью опции -p.

Давайте посмотрим на пример.

ls -l /etc/services -rw-r — r— 1 root root 19183 12 Jan 2018 /etc/services

Если я попытаюсь скопировать этот файл, его атрибуты будут изменены:

ls -l /etc/services -rw-r—r— 1 root root 19183 Jan 12 2018 /etc/services

Но если мы используем параметр p, скопированный файл сохранит режим, право собственности и отметку времени.

cp /etc/services . ls -l services -rwxrwxrwx 1 andreyex andreyex 19183 Nov 27 23:16 services

Как вы можете видеть, вы сохранили режим доступа и временную метку исходного файла с опцией -p.

Но подождите! Разве это не должно было сохранить право собственности на исходные файлы? Но вот владелец (root) исходного файла был изменен на andreyex,

Это связано с тем, что только root имеет разрешение на изменение права собственности на файл, принадлежащий root. Если вы используете опцию -p с файлом, не принадлежащим root, он сохранит право собственности. Или вы можете запустить команду с помощью sudo, это сохранит право собственности на файл, принадлежащий root.

Вы также можете указать атрибуты, которые хотите сохранить. Но тогда вам придется использовать опцию -preserve.

cp —preserve=timestamp /etc/services . ls -l services -rw-r—r— 1 andreyex andreyex 19183 Jan 12 2018 services

Как видно из вышеприведенного вывода, команда сохранила только временную метку исходного файла.

Примеры, показанные здесь, являются наиболее распространенными, которые вы будете использовать в качестве пользователя Linux, сисадмина или разработчика программного обеспечения.

Если вам понравилась эта статья, пожалуйста, поделитесь этой статьей о социальных сетях и различных форумах.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Перекрёстные ссылки книги для Копирование, перемещение, создание и удаление файлов и каталогов

Linux

ПРИМЕРЫ КОПИРОВАНИЯ ФАЙЛОВ В LINUX

Теперь, когда вы знаете основные опции можно рассмотреть примеры.Например, мы хотим скопировать некую картинку из домашней папки в подкаталог pictures:

 cp ~/pic.png ~/pictures/

Или можем явно указать имя новой картинки:

 cp ~/pic.png ~/pictures/wallpaper.png

Копирование папок осуществляется с помощью ключа -r:

 cp  -R ~/папка ~/Документы/

После выполнения этой команды копирования ~/папка будет скопирована в папку ~/Документы. Главное, не забывайте поставить слэш в конце выражения или использовать опцию -t. Иначе папка ~/документы будет перезаписана.

По умолчанию команда cp linux перезаписывает существующие файлы или папки, но можно заставить утилиту спрашивать нужно ли перезаписывать каждый файл если вы неуверены в правильности составления команды:

 cp -i ~/test ~/Documents/test

Есть и противоположная опция -n, означающая никогда не перезаписывать существующие файлы.

Опция -u позволяет копировать файл, только если уже существующий более старой версии, чем новый:

 cp -u ~/test ~/Documents/test

cp также поддерживает специальные символы замены * и ?. Например, следующая команда скопирует все файлы, начинающиеся на test:

 cp ~/test* ~/Документы/

Если нужно применить более сложные регулярные выражения, придется комбинировать утилиту cp с find или egrep.

В случае если важно сохранить права доступа к файлу и его владельца нужно использовать опцию -p:

 cp -p ~/test* ~/Документы/

Для упрощения использования команды можно использовать синтаксис фигурных скобок. Например, чтобы создать резервную копию файла выполните:

$ cp test.conf{,.bak}

Будет создан файл с таким же именем и расширением .bak

По умолчанию в cp не отображается прогресс копирования файла, что очень неудобно при работе с большими файлами, но его можно легко посмотреть с помощью утилиты cv.

Скопировать файл в другую директорию

Скопируем файл myfile.txt в директорию mydir:

cp myfile.txt mydir

Скопируем файл myfile1.txt в новый файл myfile2.txt

cp myfile1.txt myfile2.txt

Скопировать несколько файлов

Для копирования нескольких файлов нужно перечислить их через пробел. Послений параметр определяет результирующую директорию, в которую будут скопированы файлы.

cp /etc/config/myfile1.txt /home/pupkin/myfile1.txt /mnt/some/myfile3.txt mydir

Скопировать файл с подтверждением

Выведем запрос на подтверждение перезаписи результирующего файла, если он существует:

cp -i myfile1.txt myfile2.txt cp: переписать ‘myfile2.txt’? y

Показать информацию о копируемых файлах

При использовании опции -v выводится информация о том, какие файлы и куда копируются.

cp -v myfile1.txt myfile2.txt mydir/ ‘myfile1.txt’ -> ‘mydir/myfile1.txt’ ‘myfile2.txt’ -> ‘mydir/myfile2.txt’

Скопировать директорию

Чтобы скопировать директорию и все ее содержимое нужно использовать опцию -r

cp -r /home/pupkin/mydir /mnt/usbflash

Скопировать только если файлы новее

Скопируем файлы вида myfile*.txt (например, это могут быть файлы myfile1.txtmyfile10.txtmyfile2.txt) в директорию mydir, но если результирующий файл существует, то копирование выполняется только в том случае, если исходный файл новее.

cp -u myfile*.txt mydir

Не перезаписывать существующие файлы

Чтобы существующие файлы не перезаписывались, используется опция -n

cp -n /home/pupkin/mydir /mnt/usbflash

Скопировать только атрибуты

Скопируем только атрибуты файла. Содержимое файла не копируется.

cp —attributes-only myfile1.txt myfile2.txt

Создать резервную копию для результирующих файлов, если они существуют

Скопируем файл myfile1.txt в файл myfile2.txt. Если файл myfile2.txt существует, то будет создана его резервная копия.

cp -b myfile1.txt myfile2.txt

Принудительно перезаписывать существующие файлы назначения

Если файл назначения существует и не может быть открыт и удален, то можно использовать опцию -f, чтобы принудительно перезаписать такой файл:

cp -f myfile1.txt myfile2.txt
[spoiler title=»Источники»]

  • https://www.lcnt.ru/?p=213
  • https://andreyex.ru/linux/komandy-linux-i-komandy-shell/kak-skopirovat-fajly-s-pomoshhyu-komandy-sr-v-linux/
  • https://andreyex.ru/operacionnaya-sistema-linux/komanda-cp-v-linux-7-prakticheskih-primerov/
  • https://younglinux.info/bash/cpmv.php
  • https://pingvinus.ru/note/cmd-cp

[/spoiler]

11.4. Копирование файлов между Linux компьютерами

11.4. Копирование файлов между Linux компьютерами

Linux предлагает богатый выбор протоколов, которые вы можете использовать чтобы копировать файлы между
компьютерами. Выбор протокола зависит от того, насколько много усилий вы хотите
вложить и нуждаетесь ли вы в совместимости с будущими установками Windows.
Следующие секции представляют различные методы передачи файлы
из и в Linux компьютеры. Убедитесь, что вы имеете работоспособное сетевое
соединение, иначе они не будут работать. Все сценарии предполагают работу службы разрешения имен в
сети. Если ваша сеть не включает службу имен, используйте непосредственно IP адрес
или добавьте IP адреса в соответствии с именами хостов (компьютеров)
в /etc/hosts на всех компьютерах.

Следующий пример IP адресов и имен хостов используется на протяжении всего
этого раздела:

Имя хоста назначения

jupiter.example.com

IP адрес назначения

192.168.2.100

Имя хоста источника

venus.example.com

IP адрес источника

192.168.2.101

Пользователь

tux

11.4.1. Копирование файлов с помощью SSH

Следующие требования должны быть удовлетворены и на сервере, и со
стороны клиента:

  1. Если вы используете имена хостов, то убедитесь, что каждое имя фигурирует в
    /etc/hosts на сервере и на клиенте
    . Если вы используете IP
    адреса, вам не нужно ничего менять.

  2. Если вы используете брандмауэр, откройте порт SSH. Запустите YaST
    и выберите
    +. Далее
    и проверьте, отображается ли
    в списке разрешенных служб. Если нет то,
    выберите SSH из выпадающего меню и щелкните
    . Примените ваши изменения и покиньте YaST нажав
    и затем .

Чтобы копировать файлы с сервера клиенту, вы должны знать, где
файлы размещаются на сервере. Например, чтобы копировать единственный файл
/srv/foo_file с сервера
jupiter.example.com в текущий
каталог, используйте команду scp (точка указывает
на текущий каталог):

scp [email protected]:/srv/foo_file .

Чтобы копировать целый каталог, используйте рекурсивный режим
scp:

scp -r [email protected]:/srv/foo_directory .

Если ваша сеть не имеет службы разрешения имен, используйте непосредственно IP
адрес сервера:

scp [email protected]:/srv/foo_file .

Если вы не знаете точно где находится ваш файл, используйте
команду sftp.

Копирование файлов в KDE или GNOME с помощью SFTP очень просто. Поступите следующим
образом:

  1. Нажмите Alt+F2.

  2. Введите следующее в адресной строке:

    sftp://[email protected]
  3. Введите ваш пароль tux на
    jupiter.example.com.

  4. Перетащите ваши файлы или каталоги с сервера на ваш рабочий стол или
    локальный каталог.

KDE предоставляет другой протокол, называемый fish, который
может быть использован если sftp недоступен. Использование этого
протокола подобно sftp. Замените префикс
протокола sftp в URL на
fish:

fish://[email protected]

11.4.2. Передача файлов с помощью rsync

Перед использованием rsync для синхронизации файлов и каталогов между
различными компьютерами, убедитесь, что следующие требования удовлетворяются:

  1. Пакет rsync установлен.

  2. Идентичные пользователи присутствуют на обоих системах.

  3. Доступно достаточное дисковое пространство на сервере.

  4. Если вы хотите извлечь пользу из rsync в полной мере, убедитесь, что демон rsyncd
    установлен на одной из систем.

rsync полезен для архивирования или копирования данных и так же может быть использован как
демон, чтобы предоставить каталоги в сеть (смотрите Расширенная настройка синхронизации с помощью rsync).

11.4.2.1. Базовый режим rsync

Базовый режим работы rsync не требует ни каких специальных
конфигураций. rsync позволяет идеально отображать целые каталоги с одной системы
на другую. Его использование не сильно отличается от инструмента для регулярного
копирования, такого как scp. Следующая команда создает резервную копию домашнего
каталога tux на
сервере резервного копирования называемом jupiter:

rsync -Hbaz -e ssh /home/tux/ tux@jupiter:backup

Используйте следующую команду, чтобы восстановить данные из вашей резервной копии:

rsync -Haz -e ssh tux@jupiter:backup /home/tux/
11.4.2.2. rsync в режиме демона (службы)

Запустите демон rsyncd на одной из ваших систем, чтобы использовать
rsync полнофункционально. В этом режиме возможно создание
точек синхронизации (модулей), которые могут быть доступны без учетных записей. Чтобы
использовать демон rsyncd, проделайте следующее:

Процедура11.1.Расширенная настройка синхронизации с помощью rsync

  1. Войдите как root и установите пакет rsync.

  2. Настройте ваши точки синхронизации в
    /etc/rsyncd.conf. Добавьте имя точки в
    квадратных скобках и path ключевое слово, как показано
    в примере:

    						
    [FTP]
      path = /srv/ftp
     comment = An Example
  3. Запустите демон rsyncd от имени root
    rcrsyncd start.
    Чтобы автоматически запускать демон rsync во время загрузки системы,
    вызовите insserv rsyncd.

  4. Чтобы получить список всех файлов размещенных в каталоге
    /srv/ftp введите (заметьте: двойное двоеточие):

    rsync -avz jupiter::FTP
  5. Инициируйте передачу указав целевой каталог (в этом
    примере текущий каталог представлен точкой):

    rsync -avz jupiter::FTP .

По умолчанию, файлы не удаляются в процессе синхронизации. Чтобы
форсировать удаление файлов, добавьте опцию --delete. Чтобы гарантировать,
что опция --delete случайно не удаляет новые
файлы, используйте вместо нее опцию --update. Любые возникающие конфликты
должны быть разрешены в ручную.

11.4.3. Передача файлов с помощью Unison

До использования Unison для синхронизации файлов и папок между
разными компьютерами, убедитесь, что выполняются следующие требования:

  1. Установлен пакет unison.

  2. Есть достаточно свободного места у вас на локальном и удаленном
    компьютерах.

  3. Если вы хотите воспользоваться Unison в полный потенциал, убедитесь, что
    Unison установлен и запущен на удаленном компьютере.

В случае необходимости, запустите Unison с опцией -doc topics
для получения полного списка доступных разделов.

Для постоянных настроек, Unison позволяет создать
profiles (профили), которые определяют параметры Unison, такие, как
директории (корни) для синхронизации, игнорируемые типы файлов и
другие настройки. Профили хранятся в виде текстовых файлов в
~/.unison с расширением
*.prf.

11.4.3.1. Использование GUI

Для синхронизации различных каталогов с помощью Unison’s GUI, проделайте
следующее:

  1. Запустите Unison нажатием Alt+F2 и введите unison.

  2. Если вы запустили Unison в первый раз и без каких-либо опций,
    у вас запросят каталог-источник. Введите каталог-источник который
    вы хотите синхронизировать и нажмите .

  3. Введите каталог назначения. Он может быть локальным или удаленным. Если вы
    хотите синхронизироваться с удаленным каталогом, выберите метод (SSH, RSH или
    Socket) и введите и имя хоста и дополнительного пользователя.

  4. Если вы не синхронизировали эти два каталога раньше, появится
    диалоговое окно с предупреждением, информирующее вас о том, что Unison сравнит
    содержимое этих каталогов. Закройте предупреждение, нажатием и
    ждите пока Unison соберет информацию о каталогах
    и выведет информацию о различиях в главном окне.

    В левой колонке показан выбранный каталог источник, в
    третьей колонке показан каталог назначения. Если существуют различия между
    каталогами, в колонке указано условное обозначение,
    предлагаемых действий. Зеленый стрелка указывает, что файл был
    изменен, добавлен или удален в папке источнике или папке назначения.
    Направление стрелки указывает направление изменений которые
    произойдут, если произвести синхронизацию. Вопросительный знак
    указывает на конфликт (то есть файлы были изменены и Unison не будет
    автоматически перезаписывать их).

    Рисунок 11.1. Варианты синхронизации файлов

  5. Чтобы изменить показанные Unison предложения для каждого файла (например, если
    вы захотите изменить каталог), выберите файл и нажмите
    или .
    , исключает файлы из синхронизации.
    Символ в колонке изменится
    соответствующим образом.

  6. Для запуска синхронизации, нажмите .

При следующем запуске Unison, будет показано диалоговое окно
выбора профилей, с указанием пары каталогов для синхронизации. Выберите
профиль или создайте новый (еще пару каталогов) и
выполните синхронизацию, как описано выше.

11.4.3.2. Использование командной строки

Unison может быть также задействован через командную строку. Для синхронизации
локального каталога с удаленным компьютером, проделайте следующее:

  1. Откройте консоль и введите следующую команду:

    unison -ui text DIR
             ssh://[email protected]//PATH

    Замените метки с соответствующих значений.

  2. Unison спросит, что делать с вашими файлами и каталогами,
    например:

    local                  jupiter
               <----  new file   dir [f]
  3. Нажмите F если вы хотите следовать рекомендациям
    Unison. Чтобы увидеть другие команды нажмите ?.

  4. Нажмите y, если вы хотите обновить.

11.4.4. Копирование файлов с помощью FTP

Перед настройкой вашего FTP сервера, убедитесь, что выполняются
следующие требования:

  1. Установлен пакет vsftp.

  2. У вас есть доступ root к FTP сервера.

  3. Есть достаточно дискового пространства на вашем компьютере.

Только для домашних сетей

Эти настройки пригодны только для использования в
домашних сетях. Не применяйте их к сайтам, которые не защищены
брандмауэром и не разрешайте доступ из интернет.

Чтобы настроить FTP сервер, проделайте следующее:

  1. Подготовка FTP сервера:

    1. Откройте консоль, войдите в систему как root и сделайте резервную копию
      /etc/vsftpd.conf:

      cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
    2. Создайте точку доступа для анонимного FTP

      mkdir ~ftp/incoming
      chown -R ftp:ftp ~ftp/incoming
  2. Замените файлы конфигурации в соответствии с вашими потребностями
    (смотрите man-страницу vsftpd.conf об опциях
    расширенной конфигурации):

    Разрешение анонимного доступа на чтение и запись
    #
    listen=YES
    									
    # Разрешение анонимного доступа к FTP серверу
    anonymous_enable=YES
    									
    #
    local_enable=YES
    # Разрешить запись
    write_enable=YES
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    dirmessage_enable=YES
    # писать лог-файл 
    xferlog_enable=YES
    connect_from_port_20=YES
    chown_uploads=YES
    chown_username=ftp
    ftpd_banner=Welcome to FTP service.
    anon_root=/srv/ftp
    Предоставление ограниченных прав для FTP пользователей (только для дома)
    chroot_local_users=YES
  3. Перезапустите FTP сервер

    rcvsftp start

На клиентской машине, введите адрес
ftp://HOST в вашем браузере или
FTP клиенте. Замените HOST именем хоста
или IP адресом вашего сервера. Для пользователей доступно множество графических
интерфейсов, которые подходят для навигации по вашему FTP серверу.
Чтобы просмотреть их список, введите FTP в строке поиска менеджера пакетов
YaST.

Копирование файлов scp | Losst

Если у вас есть домашний сервер или сервер в интернете, то вам понадобится способ для безопасного перемещения файлов между машинами. Между локальными машинами мы могли бы просто переносить данные с помощью флешки, но на удаленный сервер нужно передавать данные только через сеть. Есть много способов реализации этой задачи.

В этой статье мы рассмотрим как выполняется копирование файлов с помощью утилиты scp (Secure Copy Command), а также что из себя представляет команда Linux scp. При передаче файлы шифруются, так что больше никто не сможет получить к ним доступ и самое интересное, что вам не нужно настраивать FTP или другое дополнительное программное обеспечение. Будет достаточно сервера SSH.

Содержание статьи:

Что такое SCP?

Команда scp — это утилита, которая работает по протоколу SSH, а значит, все что вам нужно для передачи файла на компьютер, это чтобы на нем был запущен SSH сервер, а также вы должны знать логин и пароль для подключения к нему. С помощью команды scp вы можете не только перемещать файлы между локальной и удаленной системой, но и между двумя удаленными системами. Для этого тоже будет достаточно знать пароли от них. И в отличие от Rsync вам не нужно авторизоваться на одном из серверов.

Копирование файлов scp

Эта статья рассчитана в первую очередь на начинающих, поэтому я попытаюсь объяснять все как можно подробнее. Перед тем, как мы перейдем к практике, нужно рассмотреть общий синтаксис команды:

$ scp опции пользователь1@хост1:файл пользователь2@хост2:файл

Опции утилиты больше касаются протокола SSH и настраивают общее ее поведение. Дальше следует адрес первого и второго файла. Каждый из них может быть расположен как на локальной, так и на удаленной машине. А теперь рассмотрим основные опции, которые могут нам понадобиться:

  • -1 — использовать протокол SSh2;
  • -2 — использовать протокол SSh3;
  • -B — пакетный режим для передачи нескольких файлов;
  • -C — включить сжатие;
  • — l — установить ограничение скорости в кбит/сек;
  • -o — задать нужную опцию SSH;
  • -p — сохранять время модификации;
  • -r — рекурсивное копирование директорий;
  • -v — более подробный режим.

scp /home/sergiy/file [email protected]:/root/

В качестве пользователя нужно использовать любого пользователя, который есть на сервере. Вместо IP вы можете также домен сервера. Только необходимо, чтобы у выбранного пользователя были права записи в указанную папку.

С помощью опции -r вы можете скопировать на удаленную машину целый каталог. Команда будет выглядеть вот так:

scp -r /home/sergiy/photos [email protected]:/root/

Убедитесь, что у исходного каталога нет косой черты, а у каталога назначения она должна обязательно быть. Немного изменив синтаксис с косой чертой можно передать все файлы из каталога на удаленный сервер:

scp -r /home/sergiy/photos/* [email protected]:/root/

Если поменять местами локальный путь и сервер, то вы сможете копировать файлы scp c удаленного сервера на локальный компьютер:

scp [email protected]:/root/file /home/sergiy/

Таким же самым образом вы можете копирование файлов scp или папок с сервера:

scp -r [email protected]:/root/photos /home/sergiy/

Обратите внимание, что папка, в которую вы собираетесь копировать должна завершаться косой чертой, иначе папка, которую вы копируете запишется вместо той, в которую нужно скопировать.

Чтобы скачать файл scp из одного сервера на другой, просто необходимо указать данные аутентификации на каждом из них. Например, скопируем один файл:

scp [email protected]:/home/root/index.html [email protected]:/home/root/www/

Скопируем папку с того же удаленного сервера:

scp [email protected]:/root/photos [email protected]:/home/root/www/

Выводы

В этой статье мы рассмотрели как выполняется передача файлов scp, как это работает и что вы можете сделать с помощью этой утилиты. Как вы видите, перемещать файлы с одного сервера на другой очень просто. В Linux достаточно понять основы чтобы начать работать эффективнее! А команда scp один из таких инструментов.

Копирование файлов в Linux

Копирование файлов — одна из наиболее часто используемых перед пользователями персонального компьютера. Конечно, можно открыть файловый менеджер, войти в нужную папку и скопировать файл с помощью контекстного меню — тут не о чем говорить. Но в этой статье я хотел бы рассмотреть копирование файлов в Linux с помощью терминала.

Не всегда есть доступ к файловому руководству: из-за различных графическая оболочка на домашнем компьютере может быть недоступна, на серверех используется только консольный интерфейс.К тому же копирование файлов Ubuntu через терминал намного эффективнее, и вы сами в этом убедитесь. Сегодня мы рассмотрим только обычное копирование команды cp Linux, но и не совсем обычное: с помощью tar и find .

Содержание статьи:

Утилита копирования файлов cp

Название утилиты cp — это сокращение от Copy, что означает копировать. Утилита позволяет полностью копировать файлы и директории.

Синтаксис и опции

Общий синтаксис cp выглядит вот так:

$ c опции-источник файл-приемник

Или:

$ cp файл опции-источник директория-приемник /

После выполнения команды файл-источник будет полностью перенесен в файл-приемник. Если в конце указан слэш, файл будет записан в заданную директорию с оригинальным именем.

Утилита имеет несколько интересных опций, которые могут сильно помочь при нестандартных задачах копирования, поэтому давайте их рассмотрим:

  • — только атрибуты — не копировать файла содержимого, а только флаги доступа и владельца;
  • -f, —force — перезаписывать полезные файлы;
  • -i, —interactive — спрашивать, нужно ли перезаписывать восточно;
  • -L — копировать не символические ссылки, а то, на что они указывают;
  • -n — не перезаписывать полезные файлы;
  • -P — не следовать символическим ссылкам;
  • -r — копировать папку Linux рекурсивно;
  • -s — не выполнять копирование файлов в Linux, а создавать символические ссылки;
  • -u — скопировать файл, только если он был изменён;
  • -x — не выходить за пределы этой файловой системы;
  • -p — правила владельца, временные метки и флаги доступа при копировании;
  • -t — считать файл-приемник директорией и копировать файл-источник в эту директорию.

Пример копирования файлов в linux

Теперь, когда вы знаете основные опции, можно перейти к практике. Например, мы хотим скопировать некую картинку из домашней папки в подкаталог изображений:

cp ~ / pic.png ~ / pictures /

Или могу указать явно имя новой картинки:

cp ~ / pic.png ~ / pictures / wallpaper.png

Копирование папок осуществляется с помощью ключа -r :

cp -R ~ / папка ~ / Документы /

После выполнения этой команды копирования ~ / папка будет скопирована в папку ~ / Документы.Главное, не забывайте поставить слэш в конце выражения или использовать опцию -t . Иначе папка ~ / документы будет перезаписана.

По умолчанию команда c Linux перезаписывает нужные файлы или папки, но можно заставить утилиту спрашивать, нужно ли перезаписывать каждый файл, если вы не уверены в правильности составления команды:

cp -i ~ / test ~ / Documents / test

Есть и противоположная опция -n , означающая «никогда не перезаписывать обращающие файлы».

Опция -u полезна в следующем случае: вы знаете или предполагаете, что в директории, куда копируется файл, есть старая его версия, тогда оператор -u выполнит замену на новую версию:

cp -u ~ / test ~ / Documents / test

Сp также поддерживает специальные символы замены * и ? . Например, следующая команда скопирует все файлы, начинающиеся на test :

cp ~ / test * ~ / Документы /

Если нужно применить более сложные регулярные выражения, придётсяинировать утилиту cp с find или egrep .

В случае, если необходимо сохранить права доступа к файлу и его владельца, нужно использовать опцию -p :

cp -p ~ / test * ~ / Документы /

Для упрощения использования команды можно использовать синтаксис фигурных скобок. Например, создать копию файла, выполните:

$ cp test.conf {, .bak}

Будет создан файл с таким же именем и расширением .bak

По умолчанию в cp не отображается прогресс копирования файла, что очень неудобно при работе с большими проектами, но его можно легко посмотреть с помощью утилиты cv .

Копирование файлов по регулярным выражениям в Linux

В утилите найти можно использовать различные условия и регулярные выражения для поиска файлов. Я уже немного писал о ней в статье как найти новые файлы в Linux. Мы можем скопировать все найденные с помощью find файлов, вызвав для каждого из них команду cp . Например, копируем все файлы в текущих директориях, содержащих в имени только цифры:

найти. -name [0-9] -exec cp {} ~ / Документы \

Здесь точка указывает на текущую директорию, параметр name задает регулярное выражение.Параметром exec мы задаем, какую команду нужно выполнить для обнаруженных файлов. Символ {} — подставляет имя каждого файла.

Но не найти ‘ом единым такое делается. То же самое можно получить, запросив список файлов директории в ls , отфильтровав его по регулярному выражению egrep и передав имена файлов по очереди в cp с помощью xargs :

лс -1 ~ / | egrep '[a-zA-Z]' | xargs cp -t ~ / Папка /

Это не совсем удобный способ копировать файлы Linux, но всё же он возможен.Будут скопированы все файлы из домашней директории, в имени только английские буквы.

Копирование содержимого файлов в Linux

Вы можете не только копировать файлы, но и содержать их самим содержимым. Например, склеить несколько файлов в один или разрезать файл на несколько частей. Утилита cat используется для вывода содержимого файла, комбинации с операми перенаправления вывода. Bash может выполнять копирование содержимого файла Linux в другой файл.Например:

каталог файл1> файл2

Если файл был не пустым, он будет перезаписан. Или мы можем склеить два файла в один:

каталог файл1 файл2> файл3

Специальное копирование файлов в Linux с помощью tar

Linux интересен тем, что позволяет выполнять одно и то же действие различными путями. Копирование в Linux тоже может быть выполнено не только с помощью cp . При переносе системных файлов в другой каталог, резервном копировании системных файлов и т.д. важно чтобы сохранились атрибуты, значения владельцев файлов и символические ссылки как они есть без какой-либо модификации.

Утилита cp тоже может справиться с таким согласованием? если указать опцию -p , но можно использовать утилиту архивации tar . Мы не будем создавать никаких файлов архивов, построим туннель. Первая часть команды пакует файл и отправляет на стандартный вывод, а другая сразу же распаковывает в нужную папку:

tar cf - / var | (cd / mnt / var && tar xvf -)

Здесь мы полностью копируем содержимое папки / var в папку / mnt / var.Так вы можете копировать папку Linux, причём абсолютно любую или даже целую операционную систему.

Выводы

Теперь вы знаете, как выполняется копирование файлов Ubuntu и в Linux в целом. В терминале это выполняется быстрее и эффективнее, чем с помощью графического интерфейса, если помните нужные команды. Если у вас остались вопросы, спрашивайте в комментариях!

Оцените статью:

Загрузка …

.

Как скопировать файл в Linux через терминал (Ubuntu, Debian и т.д.)

При работе с Linux через терминал не редко приходится создавать копии или копировать файлы из одной папки в другую. Например, это могут быть файлы конфигурации, которые используются для настройки программ, или просто файлов пользователя. В данной инструкции мы расскажем, как скопировать файл в Linux через терминал и какие команды для этого потребуются. Статья будет актуальной для любого дистрибутива Linux, например, Ubuntu Linux или Debian

.

Команда для копирования «cp»

Для копирования файлов в Linux через терминал используется команда «cp» (от англ.«Копия»). Команда «cp» представляет собой утилиту командной строки для копирования файлов и каталогов. Сохранение резервных копий.

В общем случае для того, чтобы скопировать файл в Linux через терминал достаточно команду «cp» и передать ей имя исходного и нового файла. Например, для того, чтобы скопировать «file.txt» в новый «newfile.txt», нужно выполнить следующую команду:

 cp файл.txt newfile.txt 

Обратите внимание, по умолчанию команда «cp» всегда будет перезаписывать уже используемые файлы копируемыми, но это поведение можно изменить с помощью опций, которые мы рассмотрим во второй части статьи.

Таким же образом выполняется копирование файла в другую папку. Вводим команду «cp», указываем путь к файлу и затем каталог, в который его нужно скопировать. Например, для того чтобы скопировать «file.txt» в каталог «папку» нужно выполнить вот такую ​​команду:

 cp файл.txt папка / 

Естественно, если это необходимо, вы можете ввести полные пути к файлам и папкам, которые копируете командой «cp». Например, копирование может выглядеть так:

 cp ~ / temp / newfile.txt ~ / temp / folder / 

Еще один пример копирования с указанием полного пути:

При необходимости можно скопировать сразу несколько файлов. В этом случае нужно сначала перечислить файлы, а затем указать папку, в этом случае их нужно скопировать.Например, для того чтобы скопировать «file.txt» и «newfile.txt» в каталог «папку» нужно выполнить следующее:

 cp file.txt папка newfile.txt / 

Аналогичное действие можно и выполнить с помощью маски. Например, для того, чтобы скопировать все txt-документы в определенную директорию, можно выполнить вот такую ​​команду:

 cp папка * .txt / 

При копировании каталогов добавок параметр «-R», так как без этого «cp» будет выдавать ошибку.Поэтому для копирования каталогов нужно ввести команду «cp -R» и указать исходный и новый каталог. Например, для того чтобы скопировать каталог «папку» в «новую папку» вам нужно выполнить вот такую ​​команду:

 cp -R папка / новая папка / 

Как и в случае с файлами, папки можно копировать сразу по несколько штук. Для этого нужно выполнить «cp», перечислить копируемые папки и указать каталог назначения. Например, для того чтобы скопировать папки «folder» и «folder2» в «newbigfolder» нужно выполнить следующее:

 cp -R папка / папка2 / newbigfolder / 

Синтаксис и команды «cp»

Команда «cp» имеет множество опций, с помощью которых можно управлять всеми аспектами копирования файлов.Синтаксис команды выглядит следующим образом:

 cp [опции] источник приемник 

Самых опций у команды «cp» очень много, поэтому мы рассмотрим самые простые и часто используемые. С остальными опциями вы можете ознакомиться отдельно, выполнив в терминале Linux команду «man cp».

 -R, -r, - рекурсивный
Рекурсивное копирование каталогов.

-b
Создание резервной копии для всех файлов, которые могли быть перезаписаны или удалены при копировании.-d
Копирование символических ссылок, а не файлов, которые они упомянуты.

-L
Копировать файлы, а не символические ссылки.

-l, --link
Создание жестких ссылок, а не их копирование.

-P, --no-dereference
Не переходить по символическим ссылкам.

-f, --force
Если существующий файл назначения не может быть открыт, удалите его и республику.

-i, --interactive
Запрос перед перезаписью файлов.

-n, --no-clobber
Не перезаписывать файлы.-s, --symbolic-link
Создавать символические ссылки вместо копирования файлов.

-t, --target-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 — это сокращение от Copy, что означает копировать. Утилита позволяет полностью копировать файлы и директории.

СИНТАКСИС И ОПЦИИ

Общий синтаксис cp выглядит вот так:

$ c опции-источник файл-приемник

Или:

$ cp файл опции-источник директория-приемник /

После выполнения команды файл-источник будет полностью перенесен в файл-приемник.Если в конце указан слэш, файл будет записан в заданную директорию с оригинальным именем.

Утилита имеет несколько интересных опций, которые могут сильно помочь при нестандартных задачах копирования, поэтому давайте их рассмотрим:

  • — только атрибуты — не копировать содержимое файла, а только флаги доступа и владельца;
  • -f, —force — перезаписывать обращающие;
  • -i, —interactive — спрашивать, нужно ли перезаписывать восстанавливающие источники;
  • -L — копировать несимволические ссылки, а то на что они указать;
  • -n — не перезаписывать полезные файлы;
  • -P — не следовать символическим ссылкам;
  • -r — копировать папку linux рекурсивно;
  • -s — не выполнять копирование файлов в linux, создавать символические ссылки;
  • -u — скопировать файл, только если он был изменен;
  • -x — не выходить за пределы этой файловой системы;
  • -p — правила владельца, временные метки и флаги доступа при копировании;
  • -t — считать файл-приемник директорией и копировать файл-источник в эту директорию.

Как скопировать файл из одной директории в другую с помощью Linux

Синтаксис для копирования файла с одного места на другое выглядит следующим образом:

cp / источник / путь / имя / цель / путь / имя

Например, представьте, что вы имеете право здорового папок:

  • дом
    • andreyex
      • документы
        • folder_one
          • file_one
          • file_two
          • file_three
        • folder_two

Если вы хотите скопировать file_one из текущего местоположения в / home / andreyex / documents / folder_one в / home / andreyex / documents / folder_two, то вы должны получить следующую команду в следующей строке:

cp / home / andreyex / documents / folder_one / file_one / home / andreyex / documents / folder_two / file_one

Ярлыки вы сделать здесь.

Главная часть может быть заменена на тильду (~), что объясняется в этой статье. Это изменяет команду на:

cp ~ / documents / folder_one / file_one ~ / documents / folder_two / file_one

Вы можете просто опустить имя файла для цели, если вы собираетесь использовать то же имя файла

cp ~ / documents / folder_one / file_one ~ / documents / folder_two

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

cp ~ / documents / folder_one / file_one

В качестве альтернативы, если вы уже в исходном файле, вы можете просто указать имя файла в качестве источника следующим образом:

cp file_one ~ / documents / folder_two

Как сделать копию перед копированием файлов в Linux

В предыдущем разделе folder_one содержит файл с именем file_one и folder_two не делает.Представьте себе, что folder_two имеет файл с именем file_one и вы запустили следующую команду:

cp file_one ~ / documents / folder_two

Приведенная выше команда перезапишет file_one, который в настоящее время находится в folder_two. Там нет подсказок, нет предупреждения и сообщения об ошибках, потому что, вы указали действующую команду.

. Это меры предосторожности при копировании файлов в Linux.Просто используйте следующую команду:

cp -b / источник / файл / цель / файл

Например:

cp -b ~ / documents / folder_one / file_one ~ / documents / folder_two / file_one

В папке назначения теперь присутствует файл, который был скопирован и там был также файл с тильдой (~) в конце, которая является резервной копией оригинального файла.

. Вы можете изменить резервное копирование для работы в нескольких ином виде, так что она создает пронумерованные резервные копии.Вы можете это сделать, если вы уже скопировали файлы и резервные копии уже существуют. Это является одной из форм контроля версии

cp —backup = пронумерованный ~ / documents / folder_one / file_one ~ / documents / folder_two / file_one

Имя файла для резервных копий будет меняться: file_one. ~ 1 ~, file_one. ~ 2 ~ и т.д.

Как запросить перед перезаписью файлов при копировании в Linux

Если вы не хотите делать резервные копии файлов, лежащих в вашей файловой системе, убедитесь, что команда не перезаписывает файл без разбора, вы можете получить приглашение, чтобы показать вопросом, не хотите ли вы перезаписать.

Для этого используйте следующий синтаксис:

cp -i / источник / файл / цель / файл

Например:

cp -i ~ / documents / folder_one / file_one ~ / documents / folder_two / file_one

Сообщение будет следующим образом: cp: overwrite ‘./file1’?

Для перезаписи файла нажмите Y на клавиатуре или для отмены нажмите N или CTRL и C одновременно.

Что происходит при копировании символьных ссылок в Linux

Символическая ссылка немного походит на ярлык на рабочем столе.Содержимое символической ссылки является адрес физического файла.

Представьте себе, вы имеете эту структуру папок:

  • дом
    • andreyex
      • документы
        • folder_one
        • folder_two
          • file_one (символические ссылки указывают на папку_one / file_one)
        • папка 3

Посмотрите на другую команду:

cp ~ / documents / folder_one / file_one ~ / documents / folder3 / file_one

Здесь не должно быть ничего нового, так как он копирует физический файл из одной папки в другую.

Что происходит, однако, если скопировать символическую ссылку из folder_two в folder3?

cp ~ / documents / folder_two / file_one ~ / documents / folder3 / file_one

Файл, который копируется в folder3 не будет символической ссылкой. Это на самом деле файл, который указывает на символическую ссылку, так на самом деле вы получите тот же результат, если путем путем копирования file_one из folder_one.

Кстати вы можете получить тот же результат с помощью следующей команды:

cp -H ~ / documents / folder_two / file_one ~ / documents / folder3 / file_one

Просто чтобы быть уверенным, хотя есть еще один переключатель, который абсолютно заставляет копировать файл, а не символическую ссылку:

cp -L ~ / documents / folder_two / file_one ~ / documents / folder3 / file_one

Если вы хотите скопировать символическую ссылку, необходимо указать следующую команду:

cp -d ~ / documents / folder_two / file_one ~ / documents / folder3 / file_one

Чтобы символическую ссылку скопировать, а не физический файл с помощью следующей команды:

cp -P ~ / documents / folder_two / file_one ~ documents / folder3 / file_one

Как создать жесткие ссылки с помощью команды ср

В чем разница между символической ссылкой и жесткой связи?

Символическая ссылка — это ярлык для физического файла.Он не содержит больше, чем адрес на физический файл.

Жесткая связь, на основную ссылку на тот же физический файл, но с другим именем. Это почти как прозвище. Это отличный способ организации файлов, не занимая дальнейшего дискового пространства.

Это руководство расскажет вам все, что вам нужно знать о жестких ссылках.

Вы можете создать жесткую ссылку с помощью команды ср.

cp -l ~ / источник / файл ~ / цель / файл

В качестве примера того, почему вы могли бы использовать жесткую ссылку учесть, что у вас есть папка под названием видео и в этой папке видео у вас есть действительно большой файл с именем honeymoon_video.mp4. Теперь представьте, что вы также хотите, чтобы видео быть известным как barbados_video.mp4, потому что он также имеет кадры Барбадоса.

Вы можете просто скопировать файл и дать ему новое имя, но это означает, что вы можете увеличить в два раза больше дискового пространства для того, что, по существу, то же самое видео.

Вы могли бы вместо того, чтобы создать символическую ссылку с именем barbados_video.mp4, которая указывает на файл honeymoon_video.mp4. Это будет работать хорошо, но если кто-то удалил honeymoon_video.mp4 вы остались со ссылкой и ничего другого по-прежнему занимает дисковое пространство.

Единственное отличие состоит в том, что они содержат разное количество индексных дескрипторов. (уникальные соединенияаторы). Удаление файла honeymoon_video.mp4 не удаляет файл, но снижает количество этого на 1. Файл будет удален только если все ссылки на этот файл будут удалены.

Чтобы создать ссылку вы могли бы сделать что-то вроде этого:

cp -l / videos / медовый месяц_видео.mp4 /videos/barbados_video.mp4

Как создать символические ссылки с помощью команды ср

. Если вы хотите создать символическую ссылку вместо жесткой ссылки, можете использовать другую команду:

cp -s / источник / файл / цель / файл

Опять же я бы использую вообще используют команду ln -s, но вместо этого работает хорошо.

Как скопировать файлы, если они новее

Если вы хотите скопировать файлы в папку, но только с перезаписью файлов назначения, если исходный файл новее, то вы можете использовать другую команду:

cp -u / источник / файл / цель / файл

Стоит отметить, что если файл не существует на стороне, то копия будет иметь место.

2. Как скопировать несколько файлов

Если вы хотите скопировать несколько файлов одновременно в новом месте, вы можете сделать это следующим образом:

cp файл1 файл2 файл3 файлN целевой_каталог

Эта команда скопирует все файлы в целевой каталог. Если в целевом каталоге есть файл (ы), соответствующий имени исходного файла (ов), он будет перезаписан.

3. Несколько способов обработки перезаписи при копировании файлов.

Вероятно, вы не всегда хотите, чтобы ваши файлы были перезаписаны, и это абсолютно логично.

Чтобы предотвратить перезапись использования файлов, вы можете использовать опцию -n. Таким образом, cp выиграл ‘перезаписать полезные файлы.

cp -n исходный_файл целевой_каталог

Но, возможно, вы хотите перезаписать некоторые файлы. Вы можете использовать интерактивную опцию -i, и она спросит вас, хотите ли вы перезаписать полезные файлы.

cp -i исходный_файл целевой_каталог cp: перезаписать «целевой_каталог / исходный_файл»?

Вы можете произвести y для перезаписи существующего файла или n, чтобы не переписать его.

Существует также возможность создания автоматических резервных копий. Если вы используете опцию -b с командой cp, она перезапишет принудительные файлы, но до этого она создаст копию перезаписанных файлов.

cp -b file.txt target_dir / file.txt ls target_dir file.txt file.txt ~

Резервная копия файла заканчивается на ~.

Вы также можете использовать параметр обновления -u, , когда имеете дело с перезаписью. С параметрами -u исходные файлы скопированы только в новое место, если исходный файл более новый, чем существующий, или если он не существует в целевом каталоге.

Подвести итоги:

  • -i: Подтвердить перед перезаписью
  • -n: Нет перезаписи
  • -b: Перезапись с резервным копированием
  • -u: Перезаписать, если файл устарел или не существует

Как скопировать папки

Копирование папок такое же, как копирование файлов.

Например, представьте, что вы имеете право здорового папок:

Представьте, что вы хотите переместить папку folder_one в папку folder_two следующим образом:

Вы можете использовать следующую команду:

cp -r / home / andreyex / documents / folder_one / home / andreyex / documents / folder_two

Кроме того, можно использовать другую команду:

cp -R / home / andreyex / documents / folder_one / home / andreyex / documents / folder_two

Это копирует содержимое folder_one, а также любые суб-каталоги и файлы в пределах подкаталогов.

Копирование файлов и каталогов

В Bash для копирования файлов используется команда cp (от «copy»), которая обычно передаются два аргумента:

  1. адрес с именем исходного файла,

  2. новый адрес с именем или просто адрес каталога, куда помещается копия.

Адрес может быть как абсолютным, так относительным. В текущем каталоге, то указывать адрес смысла нет.Пишется только имя исходного файла и имя копии. Имя копии файла отличаться от имени исходного файла.

Рассмотрим примеры.

readme readme2 ​​для cp

В данном случае создается копия файла readme, которая остается в той же директории под именем readme2.

cp readme Desktop /

В папку Desktop копируется файл readme. Здесь текущим является родительский Desktop’у каталог. Имена копии и файла оригинала будут совпадать, а вот полные адреса — нет.

cp / home / irina / tux.png /mnt/D/pingvin.png

Здесь копируется файл из одного каталога в другой, используются абсолютные адреса, имя копии изменяется.

Если надо скопировать несколько файлов в один и тот же каталог, то после команды cd сначала перечисляются все файлы-оригиналы, а последним указывается каталог, куда помещаются копии. Понятно, что при таком групповом действии имена файлов изменить нельзя.

Чтобы скопировать каталог со всем его содержимым, необходимо использовать ключ -r команды cp:

cp-r./ письма ./oldletters

Перемещение и переименование

В Bash-оболочке Linux для перемещения и переименования используется одна и та же команда — mv (от «move» — перемещать). Пере рассматривать можно рассматривать как частный случай перемещения, по сути, полный адрес файла, что равносильно перемещению, даже если файл остается в том же каталоге.

Также как в случае cp, для mv необходимо указать пару аргументов. Выбор между перемещением и переименованием зависит от того, что это за аргументы.При перемещении меняет свой адрес, следовательно, если в первом и втором аргументах указаны разные адреса, то перемещение. Если адреса одинаковые, а различаются только имена, происходит переименование. Кроме того, перемещение может быть совмещено с переименованием.

В случае перемещения без переименования во втором аргументе указывается только каталог места назначения.

мв document.txt Работа

mv document.txt Work / doc23.txt

Здесь в первом случае файл документ.txt перемещается в каталог Work. Во-втором случае одновременно происходит перемещение файла и его переименование: файл document.txt перемещается в директорию Работа и получает новое имя doc23.txt.

При использовании команды mv для переименования в качестве второго аргумента указывается новое имя:

мв order.txt orderNew.txt

мв Работа / list.odt Работа / names.odt

Каталоги перемещаются и переименовываются по тому же принципу, что и файлы. Групповое перемещение файлов работает также, как с командой cp.

Создание файлов и каталогов

Новые директории набора командой мкдир . Например, чтобы создать каталог, в текущей директории необходимо выполнить следующую команду:

мкдир Работа
или
мкдир. / Работа

набор способов создания файлов, обычно существует какой-либо набор способов создания файлов. Если возникает необходимость создать пустой файл, это можно сделать с помощью программы touch. В качестве аргумента ей передается имя создаваемого файла.Еще один способ — перенаправление вывода какой-либо команды в файл. Пример:

кал> ./Work/

января

Здесь программа калькулирует, выводит календарь на текущий месяц, поскольку стоит перенаправить вывод, то выводится команда будет в файл Январь, находящийся в папке Work.

Удаление файлов и каталогов

Для удаления файлов используется команда rm . Например:

rm ghost.png

Командой rmdir можно удалить пустой каталог.Если же каталог не пуст, следует использовать команду rm с ключом -r:

Вопросы

У вас в каталоге есть файлы с разными расширениями. Вам надо группу файлов, имеющего одно и тоже расширение, скопировать в другой каталог. Как это сделать одной командой?

Какой ключ надо использовать, чтобы при перемещении случайно не перезаписать уже имеющийся в каталоге файл с таким именем?

Курс с ответами к заданиям и дополнительными уроками:
android-приложение, pdf-версия.

6. Как скопировать несколько каталогов

Вы также можете скопировать несколько каталогов одновременно с помощью команды cp в Linux.

Просто используйте его так же, как и для одного каталога.

cp -r source_dir1 source_dir2 source_dir3 target_dir

Это всегда последний аргумент в команде, который принимается как шаблон каталог.

Если вы хотите скопировать содержимое нескольких каталогов одновременно, вы также можете сделать это:

cp -r исходный_каталог1 /.source_dir2 /. source_dir3 /. target_dir

Фактически, вы смешивать каталоги, их содержимое и файлы в целом.

cp -r исходный_каталог1 исходный_каталог2 /. source_file target_dirСоветВы можете использовать подробный режим с опцией -v, чтобы посмотреть, какие файлы копируются.

7. Как сохранить атрибуты при копировании

Когда вы копируете файл в новое место, его атрибуты, такие как права доступа к файлам и временные метки файла, изменяются.

Если вы хотите сохранить атрибуты исходного файла, вы можете скопировать файлы с помощью опции -p.

Давайте посмотрим на пример.

ls -l / etc / services -rw-r — r— 1 корень root 19183 12 января 2018 г. / etc / services

. Если я попытаюсь скопировать этот файл, его атрибуты будут поведать:

ls -l / etc / services -rw-r — r— 1 корень root 19183 12 января 2018 г. / etc / services

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

cp / etc / services. ls -l services -rwxrwxrwx 1 andreyex andreyex 19183 27 ноября 23:16 услуги

Как вы можете видеть, вы сохранили режим доступа и временную метку исходного файла с опцией -p.

Но подождите! Разве это не должно было сохранить право собственности на исходные файлы? Но вот владелец (root) исходного файла был изменен на andreyex,

Это связано с тем, что только root имеет разрешение на изменение прав собственности на файл, принадлежащий root. Если вы используете опцию -p с файлом, не принадлежащим корню, он сохранит право собственности. Или вы можете запустить команду с помощью sudo, это сохранит право собственности на файл, принадлежащий корню.

Вы также можете указать атрибуты, которые хотите сохранить.Но тогда вам придется использовать опцию -preserve.

cp —preserve = отметка времени / etc / services. ls -l services -rw-r — r— 1 andreyex andreyex 19183 12 января 2018 г. услуги

Как видно из вышеприведенного вывода, команда сохранила только временную метку исходного файла.

Примеры, показанные здесь, наиболее распространенными, которые вы будете использовать в качестве программного обеспечения пользователя Linux.

Если вам понравилась эта статья, пожалуйста, поделитесь этой статьей о социальных сетях и различных форумах.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl + Enter.

Перекрёстные ссылки книги для Копирование, перемещение, создание и удаление файлов и каталогов

Linux

ПРИМЕРЫ КОПИРОВАНИЯ ФАЙЛОВ В LINUX

Теперь, когда вы знаете варианты можно рассмотреть примеры.

cp ~ / pic.png ~ / pictures /

Или могу указать явно имя новой картинки:

cp ~ / рис.png ~ / pictures / wallpaper.png

Копирование папок осуществляется с помощью ключа -r:

cp -R ~ / папка ~ / Документы /

После выполнения этой команды копирования ~ / папка будет скопирована в папку ~ / Документы. Главное, не забывайте поставить слэш в конце выражения или использовать опцию -t. Иначе папка ~ / документы будет перезаписана.

По умолчанию команда cp linux перезаписывает файлы или папки, но можно заставить утилиту спрашивать нужно ли перезаписывать каждый файл, если вы неуверены в правильности составления команды:

cp -i ~ / test ~ / Documents / test

Есть и противоположная опция -n, означающая никогда не перезаписывать файлы.

Опция -u позволяет копировать файл, только если уже существующий более старой версии, чем новый:

cp -u ~ / test ~ / Documents / test

cp также поддерживает специальные символы замены * и?. Например, следующая команда скопирует все файлы, начинающиеся на тест:

cp ~ / test * ~ / Документы /

Если нужно применить более сложные регулярные выражения, придетсяинировать утилиту cp с find или egrep.

В случае если необходимо сохранить права доступа к файлу и его владельца нужно использовать опцию -p:

cp -p ~ / test * ~ / Документы /

Для упрощения использования команды можно использовать синтаксис фигурных скобок.Например, создать копию файла выполн:

$ cp test.conf {, .bak}

Будет создан файл с таким же именем и расширением .bak

По умолчанию в cp не отображается прогресс копирования файла, что очень неудобно при работе с большими нагрузками, но его можно легко посмотреть с помощью утилиты cv.

Скопировать файл в другую директорию

Скопируем файл myfile.txt в директорию mydir:

cp myfile.txt mydir

Скопируем файл myfile1.txt в новый файл myfile2.txt

cp myfile1.txt myfile2.txt

Скопировать несколько файлов

Для копирования файлов нужно перечислить их через пробел. Посылки параметр определяет результирующую директорию, в которую будут скопированы файлы.

cp /etc/config/myfile1.txt /home/pupkin/myfile1.txt /mnt/some/myfile3.txt mydir

Скопировать файл с подтверждением

Выведем запрос на подтверждение перезаписи результирующего файла, если он существует:

cp -i myfile1.txt myfile2.txt cp: переписать «myfile2.txt»? y

Показать информацию о копируемых файлах

При опции -v выводится информация о том, какие файлы и куда копируются.

cp -v myfile1.txt myfile2.txt mydir / ‘myfile1.txt’ -> ‘mydir / myfile1.txt’ ‘myfile2.txt’ -> ‘mydir / myfile2.txt’

Скопировать директорию

Чтобы скопировать директорию и все ее содержимое, нужно использовать опцию -r

cp -r / главная / пупкин / mydir / mnt / usbflash

Скопировать только если файлы новее

Скопируем файлы вида myfile *.txt (например, это могут быть файлы myfile1.txtmyfile10.txtmyfile2.txt) в директорию mydir, но если результирующий файл существует, то копирование выполняется только в том случае, если исходный файл новее.

cp -u myfile * .txt mydir

Не перезаписывать файлы

Чтобы восстановить не перезаписывалась, используется опция -n

cp -n / главная / пупкин / mydir / mnt / usbflash

Скопировать только атрибуты

Скопируем только атрибуты файла.Содержимое файла не копируется.

cp — только атрибуты myfile1.txt myfile2.txt

Создать копию для результирующих файлов, если они существуют

Скопируем файл myfile1.txt в файл myfile2.txt. Если существует файл myfile2.txt, то будет создана его резервная копия.

cp -b myfile1.txt myfile2.txt

Принудительно перезаписывать файлы назначения

Если файл назначения существует и не может быть открыт и удален, то можно использовать опцию -f, чтобы принудительно перезаписать такой файл:

cp -f myfile1.txt myfile2.txt
[spoiler title = »Источники»]

  • https://www.lcnt.ru/?p=213
  • https://andreyex.ru/linux/komandy-linux-i-komandy-shell/kak-skopirovat-fajly-s-pomoshhyu-komandy-sr-v-linux/
  • https://andreyex.ru/operacionnaya-sistema-linux/komanda-cp-v-linux-7-prakticheskih-primerov/
  • https://younglinux.info/bash/cpmv.php
  • https://pingvinus.ru/note/cmd-cp

[/спойлер]

.

Как скопировать файлы с помощью команды ср в Linux

Это руководство покажет вам, как копировать файлы и каталоги в вашей системе с помощью системы строки Linux.

Команда cp используется для копирования файлов .

Как скопировать файл из одной директории в другую с помощью Linux

Синтаксис для копирования файла с одного места на другое выглядит следующим образом:

 cp / источник / путь / имя / цель / путь / имя 

Например, представьте, что вы имеете право здорового папок:

  • дом
    • andreyex
      • документы
        • folder_one
          • file_one
          • file_two
          • file_three
        • folder_two

Если вы хотите скопировать file_one из текущего местоположения в / home / andreyex / documents / folder_one в / home / andreyex / documents / folder_two, то вы должны получить следующую команду в следующей строке:

 cp / home / andreyex / documents / folder_one / file_one / home / andreyex / documents / folder_two / file_one 

Ярлыки вы сделать здесь.

Главная часть может быть заменена на тильду (~), что объясняется в этой статье. Это изменяет команду на:

 cp ~ / documents / folder_one / file_one ~ / Documents / folder_two / file_one 

Вы можете просто опустить имя файла для цели, если вы собираетесь использовать то же имя файла

 cp ~ / documents / folder_one / file_one ~ / documents / folder_two 

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

 cp ~ / documents / folder_one / file_one 

В качестве альтернативы, если вы уже в исходном файле вы можете просто указать имя в качестве источника следующим образом:

 cp file_one ~ / documents / folder_two 

Как сделать копию перед копированием файлов в Linux

В предыдущем разделе folder_one содержит файл с именем file_one и folder_two не делает.Представьте себе, что folder_two имеет файл с именем file_one и вы запустили следующую команду:

 cp file_one ~ / documents / folder_two 

Приведенная выше команда перезапишет file_one, который в настоящее время находится в folder_two. Там нет подсказок, нет предупреждения и сообщения об ошибках, потому что, вы указали действующую команду.

. Это меры предосторожности при копировании файлов в Linux.Просто используйте следующую команду:

 cp -b / источник / файл / цель / файл 

Например:

 cp -b ~ / documents / folder_one / file_one ~ / documents / folder_two / file_one 

В папке назначения теперь присутствует файл, который был скопирован и там был также файл с тильдой (~) в конце, которая является резервной копией оригинального файла.

. Вы можете изменить резервное копирование для работы в нескольких ином виде, так что она создает пронумерованные резервные копии.Вы можете это сделать, если вы уже скопировали файлы и резервные копии уже существуют. Это является одной из форм контроля версии

 cp --backup = пронумерованный ~ / documents / folder_one / file_one ~ / documents / folder_two / file_one 

Имя файла для резервных копий будет меняться: file_one. ~ 1 ~, file_one. ~ 2 ~ и т.д.

Как запросить перед перезаписью файлов при копировании в Linux

Если вы не хотите делать резервные копии файлов, лежащих в вашей файловой системе, убедитесь, что команда не перезаписывает файл без разбора, вы можете получить приглашение, чтобы показать вопросом, не хотите ли вы перезаписать.

Для этого используйте следующий синтаксис:

 cp -i / источник / файл / цель / файл 

Например:

 cp -i ~ / documents / folder_one / file_one ~ / documents / folder_two / file_one 

Сообщение будет следующим образом: cp: overwrite ‘./file1’?

Для перезаписи файла нажмите Y на клавиатуре или для отмены нажмите N или CTRL и C одновременно.

Что происходит при копировании символьных ссылок в Linux

Символическая ссылка немного походит на ярлык на рабочем столе.Содержимое символической ссылки является адрес физического файла.

Представьте себе, вы имеете эту структуру папок:

  • дом
    • andreyex
      • документы
        • folder_one
        • folder_two
          • file_one (символические ссылки указывают на folder_one / file_one)
        • папка 3

Посмотрите на следующую команду:

 cp ~ / documents / folder_one / file_one ~ / documents / folder3 / file_one 

Здесь не должно быть ничего нового, так как он копирует физический файл из одной папки в другую.

Что происходит, однако, если скопировать символическую ссылку из folder_two в folder3?

 cp ~ / documents / folder_two / file_one ~ / documents / folder3 / file_one 

Файл, который копируется в folder3 не будет символической ссылкой. Это на самом деле файл, который указывает на символическую ссылку, так на самом деле вы получите тот же результат, если путем путем копирования file_one из folder_one.

Кстати вы можете получить тот же результат с помощью следующей команды:

 cp -H ~ / documents / folder_two / file_one ~ / documents / folder3 / file_one 

Просто чтобы быть уверенным, хотя есть еще один переключатель, который абсолютно заставляет копировать файл, а не символическую ссылку:

 cp -L ~ / documents / folder_two / file_one ~ / documents / folder3 / file_one 

Если вы хотите скопировать символическую ссылку, необходимо указать следующую команду:

 cp -d ~ / documents / folder_two / file_one ~ / documents / folder3 / file_one 

Чтобы символическую ссылку скопировать, а не физический файл с помощью следующей команды:

 cp -P ~ / documents / folder_two / file_one ~ documents / folder3 / file_one 

Как создать жесткие ссылки с помощью команды ср

В чем разница между символической ссылкой и жесткой связи?

Символическая ссылка — это ярлык для физического файла.Он не содержит больше, чем адрес на физический файл.

Жесткая связь, на основную ссылку на тот же физический файл, но с другим именем. Это почти как прозвище. Это отличный способ организации файлов, не занимая дальнейшего дискового пространства.

Это руководство расскажет вам все, что вам нужно знать о жестких ссылках.

Вы можете создать жесткую ссылку с помощью команды ср.

 cp -l ~ / источник / файл ~ / цель / файл 

В качестве примера того, почему вы могли бы использовать жесткую ссылку учесть, что у вас есть папка под названием видео и в этой папке видео у вас есть действительно большой файл с именем honeymoon_video.mp4. Теперь представьте, что вы также хотите, чтобы видео быть известным как barbados_video.mp4, потому что он также имеет кадры Барбадоса.

Вы можете просто скопировать файл и дать ему новое имя, но это означает, что вы можете увеличить в два раза больше дискового пространства для того, что, по существу, то же самое видео.

Вы могли бы вместо того, чтобы создать символическую ссылку с именем barbados_video.mp4, которая указывает на файл honeymoon_video.mp4. Это будет работать хорошо, но если кто-то удалил honeymoon_video.mp4 вы остались со ссылкой и ничего другого по-прежнему занимает дисковое пространство.

Единственное отличие состоит в том, что они содержат разное количество индексных дескрипторов. (уникальные соединенияаторы). Удаление файла honeymoon_video.mp4 не удаляет файл, но снижает количество этого на 1. Файл будет удален только если все ссылки на этот файл будут удалены.

Чтобы создать ссылку вы могли бы сделать что-то вроде этого:

 cp -l / videos / медовый месяц_видео.mp4 /videos/barbados_video.mp4 

Как создать символические ссылки с помощью команды ср

. Если вы хотите создать символическую ссылку вместо жесткой ссылки, можете использовать другую команду:

 cp -s / источник / файл / цель / файл 

Опять же я бы использую вообще используют команду ln -s, но вместо этого работает хорошо.

Как скопировать файлы, если они новее

Если вы хотите скопировать файлы в папку, но только с перезаписью файлов назначения, если исходный файл новее, то вы можете использовать другую команду:

 cp -u / источник / файл / цель / файл 

Стоит отметить, что если файл не существует на стороне, то копия будет иметь место.

Как скопировать несколько файлов

. Вы можете предоставить более одного исходного файла внутри команды копирования следующим образом:

 cp / источник / один_файл / источник / два_файла / источник / дерево_файлов / цель 

Приведенная выше команда будет копировать file_one, file_two и file_three в целевую папку.

. Если файлы соответствуют определенному шаблону, можно также использовать групповые символы следующим образом:

 cp / home / andreyex / music / *.mp3 / домашний / andreyex / music2 

Приведенная выше команда будет копировать все файлы с расширением .mp3 в папку music2.

Как скопировать папки

Копирование папок такое же, как копирование файлов.

Например, представьте, что вы имеете право здорового папок:

Представьте, что вы хотите переместить папку folder_one в папку folder_two следующим образом:

Вы можете использовать следующую команду:

 cp -r / home / andreyex / documents / folder_one / home / andreyex / documents / folder_two 

Кроме того, можно использовать другую команду:

 cp -R / home / andreyex / documents / folder_one / home / andreyex / documents / folder_two 

Это копирует содержимое folder_one, а также любые суб-каталоги и файлы в пределах подкаталогов.

Резюме

Это руководство дало вам инструменты требующиеся для копирования файлов в Linux. Для всего остального вы можете использовать команду Linux man.

 человек CP 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl + Enter .

.

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

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