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

Я пытаюсь скопировать содержимое папки в другую папку в другом каталоге, используя терминал.

Может ли кто-нибудь предоставить мне пример синтаксиса командной строки, необходимого для этого?

965
задан 13 July 2015 в 00:54

7 ответов

Вы можете скопировать содержимое папки / source в другую существующую папку / dest с помощью команды

cp -a /source/. /dest/

. Параметр -a является улучшенная рекурсивная опция, которая сохраняет все атрибуты файлов, а также сохраняет символические ссылки.

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

1452
ответ дан 13 July 2015 в 00:54

Допустим, у вас есть папка с именем folder1 в вашем ~ , внутри folder1 находится 1 файл с именем file1 и 2 папки с именами sub1 и sub2 , каждая с другими файлами и папками внутри них.

Чтобы скопировать все содержимое ~ / folder1 в ~ / new_folder1 , вы должны использовать

cp -r ~/folder1/. ~/new_folder1

new_folder1 тогда будет содержать все файлы и папки из folder1 .

cp - это команда для копирования используя терминал, -r делает это рекурсивно (так, текущий каталог + дополнительные каталоги внутри текущего) ~ / folder1 - это исходная папка, ~ / new_folder1 - папка назначения для файлов / папок внутри источника.

97
ответ дан 13 July 2015 в 00:54

Отметьте это http://www.cyberciti.biz/faq/copy-folder-linux-command-line/ для получения дополнительной информации о копировании папки. Надеюсь, это поможет.

cp Command

cp - это команда Linux для копирования файлов и каталогов. Синтаксис следующий:

cp source destination
cp dir1 dir2
cp -option  source destination
cp -option1 -option2  source destination

В этом примере скопируйте папку / home / vivek / letter и все ее файлы в каталог / usb / backup :

cp -avr /home/vivek/letters /usb/backup

Где,

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

-v : Объясните, что делается.

-r : рекурсивное копирование каталогов. Пример

Скопируйте папку с именем / tmp / conf в / tmp / backup:

$ cp -avr /tmp/conf/ /tmp/backup
15
ответ дан 13 July 2015 в 00:54

Если есть две папки: (с разрешением на запись)

drwxr-xr-x 4 vimal vimal  4096 Sep  9 12:17 .
drwxr-xr-x 3 root  root   4096 Aug 18 14:35 ..
drwxrwxrwx 6 vimal vimal  4096 Sep  9 12:15 DATA
drwxrwxrwx 7 vimal vimal  4096 Sep  9 12:15 PORTAL

Если вы находитесь внутри папки с именем ПОРТАЛ, куда вы хотите скопировать все содержимое другой папки, скажите ДАННЫЕ одновременно уровень тогда вы выполните

vimal @ vimal-D3H: / var / www / html / PORTAL $ cp -a ../DATA/. .

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

и

, одну следующую за / DATA /. говорит, что копируется все СОДЕРЖАНИЕ внутри папки DATA, а не сама папка DATA.

Если вы удалите этот завершающий "." из / DATA /

, тогда вся папка DATA будет скопирована в ПОРТАЛ (откуда вы копируете).

3
ответ дан 13 July 2015 в 00:54

Альтернативный вариант - rsync :

rsync -a source/ destination

Преимущества rsync : :

  1. После начальной синхронизации он скопирует только те файлы, которые были изменены.
  2. Вы можете использовать его по сети, что удобно для файлов в $ HOME, особенно для файлов конфигурации.
159
ответ дан 13 July 2015 в 00:54

Простой пример.

Скопируйте каталог dir_1 и его содержимое ( файлы ) в каталог dir_2 :

cp -r ./dir_1 ./dir_2
# or
cp -r ./dir_1/ ./dir_2/
# Results in: ./dir_2/dir_1/_files_

Скопируйте только содержимое ( файлов ) каталога dir_1 в каталог dir_2 :

cp -r ./dir_1/. ./dir_2
# or
cp -r ./dir_1/. ./dir_2/
# Results in: ./dir_2/_files_

_files_ является заполнителем для фактических файлов, находящихся в каталоге.

17
ответ дан 22 November 2019 в 22:31

Мне нравится эта команда

rsync -av --progress ~/code/project-source/. ~/code/project-destination --exclude .git --exclude node_modules

Некоторые из часто используемых параметров в команде rsync перечислены ниже:

  • -v, –verbose: Подробный вывод
  • -q, –quiet: подавить вывод сообщений
  • -a, –archive: архивировать файлы и каталог при синхронизации (-an равно следующим параметрам -rlptgoD)
  • -r, –recursive: рекурсивно синхронизировать файлы и каталоги
  • -b, –backup : сделать резервную копию во время синхронизации
  • -u, –update:не копируйте файлы из источника в место назначения, если файлы назначения новее
  • -l, –links: копировать символические ссылки как символические ссылки во время синхронизации
  • -n, –dry-run: выполнять пробный запуск без синхронизации
  • -e, –rsh = КОМАНДА: указать удаленную оболочку для использования в rsync
  • -z, –compress: сжимать данные файла во время передачи
  • -h, –human-readable: отображать выходные числа на человеке -читаемый формат
  • -progress: показать ход синхронизации во время передачи
1
ответ дан 5 January 2021 в 23:47

Другие вопросы по тегам:

Похожие вопросы: