Як можна скопіювати вміст папки в іншу папку в інший каталог за допомогою терміналу?


740

Я намагаюся скопіювати вміст папки в іншу папку в інший каталог за допомогою терміналу.

Чи зможе хтось надати мені приклад синтаксису командного рядка, необхідного для досягнення цього?

Відповіді:


1115

Ви можете скопіювати вміст папки /sourceв іншу існуючу папку /destза допомогою команди

cp -a /source/. /dest/

-aВаріант є вдосконаленим рекурсивний варіант, який зберігає всі атрибути файлів, а також зберегти символічні посилання.

В .кінці вихідного шляху - це специфічний cpсинтаксис, який дозволяє копіювати всі файли та папки, включаючи приховані.


@enzotib Я намагаюся за допомогою цієї команди скопіювати вміст "Завантажень / текстового тексту" в "~ / .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/
Ділан Валаде

3
@DylanValade: -aвже має на увазі --preserve=all, що ширше, ніж -p = --preserve=mode,ownership,timestamps.
enzotib

1
@BennyNeugebauer: scpвикористовується для копіювання по мережі (наскрізь ssh) і шифрує лише канал зв'язку, а не файли у файловій системі призначення.
enzotib

129

Замінник - rsync

rsync -r source/ destination

Перевагами rsync є:

  1. Після первинної синхронізації він буде копіювати лише ті файли, які були змінені.

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


5
Я думаю, вам не потрібна зірочка. rsync -r source/ destinationповинно вистачити, ні?
Джошуа

1
Цей варіант більше підходить: 'rsync -rtvp source / *
destinacija

-r не працює для прихованих файлів / папок
Nam G VU

1
Це не буде копіювати приховані файли, оскільки bash розширює * лише на не прихований файл. Рішення від @Joschua безпечніше.
sauerburger

rsync скопіює весь каталог, включаючи приховані файли, якщо ви використовуєте трейлінг / без *, тому, rync source/ destочевидно, людям потрібно буде налаштувати команду rsync, щоб вона працювала так, як вони бажають.
Пантера

78

Припустимо , у вас є папка під назвою Folder1 в вашому ~всередині folder1 є 1 файл з ім'ям file1 і 2 папки під назвою sub1 і SUB2 кожен з іншими файлами і папками всередині них.

Щоб скопіювати весь вміст, ~/folder1який ~/new_folder1ви використовували б

cp -r ~/folder1/. ~/new_folder1

new_folder1Потім містять усі файли та папки з folder1.

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


5
він не вловлює приховані файли
Portablejim

1
Дякую Бруно! Це допомогло мені зрозуміти синтаксис, хоча мені довелося трохи змінити його (видалення ~ знак). Можливо тому, що папка призначення була в / opt, яка знаходиться в іншій файловій системі. І дякую Portablejim, що пам’ятали про прихований файл!
pandisvezia

4
Помітний період важливий. Без цього іноді він може створити новий підкаталог ~/new_folder1/folder1замість копіювання вмісту.
Вісбукі

1
Чому б і ні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]#
Бруно Перейра

14

Перевірте цей 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 / резервну копію:

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

3
Про це не задається питанням.
AStopher

(Використання -r з -a є зайвим; для gnu cp -a - це те саме, що "-dr --резервувати = всі")
cristoper

1
cp: параметри -R і -r можуть бути не задані разом.
ІгорГанапольський

4

Простий приклад.

Скопіюйте каталог dir_1 та його вміст (_files_) у каталог dir_2 :

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

Скопіюйте вміст (_files_) лише з dir_1 в каталог dir_2 :

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

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


2

Якщо є дві папки: (з дозволом на запис)

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 буде скопійована всередину PORTAL (звідки ви працюєте).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.