cp 명령은 주로 파일과 디렉토리를 복사하는 데 사용되며 일부 옵션을 사용하면 전체 디렉토리를 복사하고 이전 파일과 새 파일을 업그레이드 할 수도 있습니다.
cp 명령의 기본 형식은 다음과 같습니다.
[root @ localhost ~] # cp [옵션] 소스 파일 객체 파일
옵션 :
- -a : -d, -p, -r 옵션 모음과 동일하며 이러한 옵션을 하나씩 소개합니다.
- -d : 소스 파일이 소프트 링크 (하드 링크에는 유효하지 않음) 인 경우 복사 된 대상 파일도 소프트 링크입니다.
- -i : 대상 파일이 이미 있는지 묻고 덮어 쓰는지 묻습니다.
- -l : 소스 파일을 복사하는 대신 대상 파일을 소스 파일의 하드 링크 파일로 작성하십시오.
- -s : 소스 파일을 복사하는 대신 대상 파일을 소스 파일의 소프트 링크 파일로 작성하십시오.
- -p : 대상 파일은 복사 후 소스 파일의 속성 (소유자, 그룹, 권한 및 시간 포함)을 유지합니다.
- -r : 디렉토리를 복사하는 데 사용되는 재귀 복사;
- -u : 대상 파일이 소스 파일과 다른 경우이 옵션을 사용하여 대상 파일을 업데이트하십시오이 옵션을 사용하여 파일을 업그레이드하고 백업 할 수 있습니다.
소스 파일이 둘 이상있을 수 있지만이 경우 대상 파일은 디렉토리 여야합니다.
여기의 소프트 링크는 Windows 시스템의 바로 가기와 유사하지만 하드 링크는 파일 시스템의 inode 번호를 통해 새 파일 이름을 생성합니다. 소프트 링크 나 하드 링크를 복사해도 소스 파일이 복사되지 않습니다. 소프트 링크 및 하드 링크에 대한 자세한 내용은 Linux ln 명령 섹션을 참조하십시오.
[예 1]
cp 명령의 기본 사용법 cp 명령은 파일을 복사하거나 디렉토리를 복사 할 수 있습니다. 먼저 파일 복사 방법을 살펴 보겠습니다. 예를 들면 다음과 같습니다.
[root @ localhost ~] # touch cangls #
소스 파일 만들기
[root @ localhost ~] # cp cangls / tmp / #
이름을 / tmp / 디렉토리로 변경하지 않고 소스 파일을 복사 합니다.
사본의 이름을 바꾸어야하는 경우 명령은 다음과 같습니다.
[root @ localhost ~] # cp cangls / tmp / bols #
복사본 이름 바꾸기
동일한 이름의 파일이 복사 된 대상에 이미 존재하면 cp 명령이 기본적으로 "cp -i"의 별명을 실행하므로 덮어 쓸지 여부를 묻습니다.
[root @ localhost ~] # cp cangls / tmp /
cp : "/ tmp / cangls"를 덮어 쓰시겠습니까? y #
대상 위치에 같은 이름의 파일이 있으므로 덮어 쓸지 묻는 메시지가 표시됩니다.
다음으로 디렉토리를 복사하는 방법을 보도록하겠습니다. 실제로 "-r"옵션을 사용하여 디렉토리를 복사하십시오.
[root @ localhost ~] # mkdir movie #
테스트 디렉토리 생성
[root @ localhost ~] # cp -r / root / movie / / tmp /
#directory copy
[예 2] 소프트 링크 파일 복사
소스 파일이 일반 파일이 아니라 소프트 링크 파일 인 경우 소프트 링크의 속성을 복사 할 수 있습니까? 시도해 봅시다 :
[루트 @ localhost를 ~] #의 LN -s / 루트 / cangls / tmp를 / cangls_slink
# 테스트 파일 / tmp를 / cangls_slink 만들 수있는 소프트 링크
[루트 @ 로컬 호스트를 ~] #의 LL / tmp를 / cangls_slink
lrwxrwxrwx 1 개 루트 루트 (12) 6월 14일 05 : 53 / tmp / cangls_slink-> / root / cangls
# 소스 파일 자체는 소프트 링크 파일입니다.
[root @ localhost ~] # cp / tmp / cangls_slink / tmp / cangls_t1 #
소프트 링크 파일을 복사 하지만 "-d"는 없습니다. 옵션
[root @ localhost ~] # cp -d / tmp / cangls_slink / tmp / cangls_t2 #
소프트 링크 파일을 복사 하고 "-d"옵션을 추가하십시오
[root @ localhost ~] # ll / tmp / cangls_t1 / tmp / cangls_t2
-rw- R--r-- 1 루트 루트 0 6 월 14 일 05:56 / tmp / cangls_t1
#는 소프트 링크 파일
lrwxrwxrwx 1 루트 루트가 아니라 소프트 링크 소스 파일의 실제 복사 본인 "-d"옵션을 찾을 수 없습니다. 12 6 월 14 일 05 : 56 / tmp / cangls_t2-> / root / cangls #
"-d"옵션이 추가되면 소프트 링크 파일이 복사됩니다
이 예는 소프트 링크 파일을 복사 할 때 "-d"옵션을 사용하지 않으면 cp 명령이 소프트 링크 파일 대신 소스 파일을 복사하고 "-d"옵션이 추가 된 경우에만 소프트 링크 파일이 복사됨을 보여줍니다. "-d"옵션은 하드 링크에 유효하지 않습니다.
[예 3] 소스 파일 속성 사본 보유
복사 명령이 실행 된 후 대상 파일의 시간이 소스 파일의 시간이 아니라 복사 명령의 실행 시간이된다는 것을 알았습니다. 예를 들면 다음과 같습니다.
[root @ localhost ~] # cp /var/lib/mlocate/mlocate.db / tmp /
[root @ localhost ~] # ll /var/lib/mlocate/mlocate.db
-rw-r ----- 1 루트 Slocate2328027 6 월 14 일 02 : 08 / var / lib / mlocate / mlocate.db #
소스 파일의 시간과 그룹을 기록하십시오
[root @ localhost ~] #ll /tmp/mlocate.db
-rw-r ----- 1 루트 루트 2328027 6 월 14 일 06 : 05 / tmp / mlocate.db #
루트 사용자가 복사 명령을 실행하기 때문에 대상 파일이 루트 그룹에 속하며 시간이 복사 명령의 실행 시간이됩니다.
백업 및 백업을 수행 할 때 이러한 파일의 시간은 중요한 매개 변수 일 수 있으며 "-p"옵션이 필요합니다. 이 옵션은 소유자, 그룹 및 시간을 포함하여 소스 파일의 속성을 유지합니다. 예를 들면 다음과 같습니다.
[root @ localhost ~] # cp -p /var/lib/mlocate/mlocate.db /tmp/mlocate.db_2 #
"-p"옵션 사용
[root @ localhost ~] # ll / var / lib / mlocate / mlocate. Db /tmp/mlocate.db_2
-rw-r ----- 루트 슬로 케이트 2328027 6 월 14 일 02:08 /tmp/mlocate.db_2
-rw-r ----- 루트 슬로 케이트 2328027 6 월 14 일 02:08 / Var / lib / mlocate / mlocate.db #
시간을 포함 하여 소스 및 대상 파일 의 모든 속성이 동일합니다
앞에서 언급했듯이 "-a"옵션은 "-d, -p, -r"옵션과 동일하며 이미 언급 했었습니다. 따라서 "-a"옵션을 사용하면 소스 파일의 소유자, 그룹, 시간 및 소프트 링크 가능성을 포함하여 대상 파일과 소스 파일의 모든 속성이 동일합니다. "-d, -p, -r"옵션 대신 "-a"옵션을 사용하는 것이 더 편리합니다.
[예 4] "-l"및 "-s"옵션
"-l"옵션을 사용하면 대상 파일이 소스 파일에 대한 하드 링크로 작성되고 "-s"옵션을 사용하면 대상 파일이 소스 파일로 생성 된 소프트 링크입니다.
이 두 옵션은 "-d"옵션과 다릅니다 "d"옵션을 사용하려면 소스 파일이 소프트 링크 여야하고 대상 파일이 소프트 링크로 복사됩니다. "-l"및 "-s"옵션의 소스 파일은 일반 파일이어야하며 대상 파일을 하드 링크 및 소프트 링크로 직접 복사 할 수 있습니다. 예를 들면 다음과 같습니다.
[루트 @ 로컬 호스트 ~] 터치 볼스 # 1
# 가입 파일
[루트 @ 로컬 호스트 ~] -i # 볼스 LL
262 154-RW-R & LT - 14 일 루트에게 루트 r--로 1 0.6 6시 26분 볼스.
# 단지 소스 파일 일반 파일, 오히려 소프트 링크 파일보다
[루트 @ localhost를 ~] #은 cp에 -l / 루트 / 볼스 / tmp를 / bols_h
[루트 @ localhost를 ~] # cp를 -s / 루트 / 볼스 / tmp를 / bols_s
#은 "-l"을 사용하여 및 옵션은 복사 "-s"
# LL -i / tmp를 / bols_h / tmp를 / bols_s [~ 루트 @ 로컬 호스트]
26 / tmp를 / bols_h의 : r--로 약 √2 루트 0 6 왕위 06 14-262 154-RW-R
# 대상 파일 / tmp를 / bols_h 소스 파일 하드 링크 된 파일
932113 lrwxrwxrwx 1 루트 루트 10 6 왕위 06 14 : 27 / tmp를 / bols_s -> / 루트 / 볼스
# 대상 파일 / tmp를 / bols_s 소스 파일 소프트 링크 파일
'IT's Life > Linux' 카테고리의 다른 글
Linux mv 명령 : 파일 이동 또는 이름 바꾸기 (0) | 2019.08.11 |
---|---|
Linux rm 명령 : 파일 또는 디렉토리 삭제 (0) | 2019.08.11 |
Linux In 명령 : 파일간에 링크 작성 (0) | 2019.08.11 |
Linux touch 명령 : 파일 작성 및 파일 타임 스탬프 수정 (0) | 2019.08.11 |
Linux mkdir 명령 : 디렉토리 (폴더) 생성 / rmdir 명령 : 빈 디렉토리 삭제 (0) | 2019.08.10 |