Вопрос Как скопировать содержимое папки в другую папку в другой папке с помощью терминала?


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

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


529
2017-12-11 01:19


происхождения


cyberciti.biz/faq/copy-folder-linux-command-line имеет более четкую информацию. - Dilip Rajkumar


ответы:


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

cp -a /source/. /dest/

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

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


802
2017-12-11 12:01



Отличный ответ. Я напишу реальный пример, если у кого-то возникают проблемы с этой командой: sudo cp -a / var / www / opencart /. / Var / WWW / opencart_local / - pablofiumara
@enzotib Я пытаюсь использовать эту команду для копирования содержимого «Downloads / textext» в «~ / .config / inkscape / extensions /.» Используя вашу команду, введите «cp -a / Downloads / textext /. /~/.config/inkscape/extensions/». но это не работает - Funzies
@Funzies: возможно, ваша команда должна быть: cp -a ~/Downloads/textext/. ~/.config/inkscape/extensions/ - enzotib
Добавить -p флаг для сохранения прав доступа к файлам и временных меток. cp -ap /var/www/original.com/images/. /var/www/new.com/images/ - Dylan Valade
@DylanValade: -a уже подразумевает --preserve=all, что шире, чем -p = --preserve=mode,ownership,timestamps, - enzotib


Альтернативным является rsync

rsync -r source/ destination

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

  1. После первоначальной синхронизации он копирует только те файлы, которые были изменены.

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


97
2017-12-11 03:59



Я думаю, вам не нужна звездочка. rsync -r source/ destination должно быть достаточно, нет? - Joschua
Это более подходит: 'rsync -rtvp source / * destination' - shridutt kothari
-r не работает для скрытых файлов / папок - Nam G VU
Это не будет копировать скрытые файлы, так как bash расширяет * только для не скрытого файла. Решение @Joschua безопаснее. - sauerburger
rsync скопирует весь каталог, включая скрытые файлы, если вы используете трейлинг / без * так rync source/ dest Очевидно, людям нужно будет настроить команду rsync для работы по своему усмотрению. - Panther


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

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

cp -r ~/folder1/. ~/new_folder1

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

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


56
2017-12-11 01:23



он не захватывает скрытые файлы - Portablejim
Спасибо, Бруно! Это помогло мне понять синтаксис, хотя мне пришлось немного изменить его (удаление знака ~). Возможно, потому что папка назначения была в / opt, которая находится в другой файловой системе. И спасибо Portablejim, чтобы запомнить скрытый файл! - pandisvezia
Важнейший период. Без него иногда может создаваться новый подкаталог ~/new_folder1/folder1 вместо копирования содержимого. - wisbucky
Почему нет cp -r ~/folder1/* ~/new_folder1 - Alex78191
@ Alex78191 [root@ home]# mkdir food [root@ home]# cd food/ [root@ food]# mkdir .fruit [root@ food]# mkdir veggies [root@ food]# touch veggies/carrots [root@ food]# touch .fruit/apple [root@ food]# ls * carrots [root@ food]# - Bruno Pereira


Проверь это 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/letters папку и все ее файлы в /usb/backup каталог:

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

Где,

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

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

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

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

$ cp -avr /tmp/conf/ /tmp/backup

13
2017-11-25 05:53



Это не тот вопрос, который задает вопрос. - cybermonkey
(Использование -r с -a избыточно, на gnu cp -a такое же, как «-dr --preserve = all») - cristoper


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

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

Если вы находитесь в папке PORTAL, где вы хотите скопировать все содержимое другой папки, сообщите DATA на том же уровне то вы сделаете

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

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

а также

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

Если вы удалите этот трейлинг «.» из / DATA /

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


2
2017-09-09 10:39