터미널을 사용하여 폴더의 내용을 다른 디렉토리의 다른 폴더로 복사하려면 어떻게해야합니까?


740

터미널을 사용하여 폴더의 내용을 다른 디렉토리의 다른 폴더로 복사하려고합니다.

누군가 내게 이것을 달성하는 데 필요한 명령 줄 구문의 예를 제공 할 수 있습니까?

답변:


1115

다음 명령 을 사용하여 폴더의 내용 /source을 다른 기존 폴더 /dest로 복사 할 수 있습니다

cp -a /source/. /dest/

-a옵션은 모든 파일 속성을 유지하고 심볼릭 링크를 유지하는 개선 된 재귀 옵션입니다.

.소스 경로의 끝은 특정 cp숨겨진 것들을 포함 된 모든 파일과 폴더를 복사 할 수 구문.


@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

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충분해야합니까?
Joschua

1
이 하나가 더 적합 : 'rsync를 -rtvp 소스 / * 대상'
shridutt Kothari의

-r은 숨김 파일 / 폴더에서 작동하지 않음
Nam G VU

1
bash는 숨겨지지 않은 파일로만 확장되므로 *은 숨겨진 파일을 복사하지 않습니다. @Joschua의 솔루션이 더 안전합니다.
sauerburger

후행 /를 *없이 사용하면 rsync는 숨겨진 파일을 포함하여 전체 디렉토리를 복사하므로 rync source/ dest분명히 사람들은 원하는대로 작동하도록 rsync 명령을 사용자 정의해야합니다.
Panther

78

folder1 이라는 폴더 가 있고 ~, 안에 folder1file1 이라는 1 개의 파일 이고 sub1sub2 라는 2 개의 폴더가 있고 그 안에 다른 파일과 폴더가 있습니다.

모든 내용을 복사하려면 ~/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내용을 복사하는 대신 새로운 하위 디렉토리 를 만들 수 있습니다 .
wisbucky

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]#
Bruno Pereira

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 / backup에 복사하십시오.

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

3
이것은 질문이 아닙니다.
AStopher

(-a와 함께 -r을 사용하는 것은 불필요합니다. gnu cp에서 -a는 "-dr --preserve = all"과 동일합니다)
cristoper

1
cp : -R 및 -r 옵션을 함께 지정할 수 없습니다.
IgorGanapolsky

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_

복사 만 dir_1의 내용 (_files_) 디렉토리에 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 폴더 내부의 모든 CONTENTS가 복사된다고 말합니다.

이 후행 "."를 제거하면 / DATA /에서

그런 다음 전체 DATA 폴더가 PORTAL (복사중인 위치)에 복사됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.