파일 복사 및 디렉토리 생성

파일 복사 및 디렉토리 생성

내 디렉토리에 파일이 있습니다/a/b/c/xxxxx.sql

/a/b/d더 이상 하위 디렉터리가 없는 다른 디렉터리가 있습니다 .

디렉토리에 새 파일을 가져오려면 단일 명령으로 xxxxx.sql어떻게 복사해야 합니까?/a/b/d/a/b/d/c/xxxxx.sql

답변1

사용 install명령:

install -D -m644 /a/b/c/xxxxx.sql /a/b/d/c/xxxxx.sql

에서 man install:

install- 파일 복사 및 속성 설정

644원하는 것을 수정하여 Unix 권한을 선택할 수 있으며, 755이 명령은 주로 소프트웨어 배포에 사용되기 때문에 기본값입니다. 무시 당하다 umask.

이 명령은 존재하지 않는 경우 모든 디렉터리 구조를 투명하게 생성합니다 -D.

-D

DEST마지막 구성요소를 제외한 모든 주요 구성요소를 생성 하거나 --target-directory다음의 모든 구성요소를 생성합니다.SOURCEDEST

rwxr-xr-x그럼에도 불구하고 755기존umask 디렉터리의 권한은 수정되지 않습니다.

답변2

GNU cp를 사용하여 다음 옵션을 사용하여 새 디렉터리에서 보려는 경로의 시작점에서 복사합니다 --parents.

cd /a/b &&
  cp --parents c/foo d

예:

% cp --parents c/foo d --verbose
c -> d/c
'c/foo' -> 'd/c/foo'

단일 명령으로 만드십시오.

{ cd /a/b && cp --parents c/foo d; } # compound command
env -C /a/b cp --parents c/foo d  # simple command assuming BSD/GNU env

를 사용하면 파일 유형, 권한, ACL, 확장 속성, 희소성 및 소유권(시스템에서 허용하는 경우)을 포함하여 -a디렉터리 및 파일의 모든 속성이 소스에서 복사됩니다 .cpcfoo

답변3

당신은 그것을 사용할 수 있습니다동기화상대적인 옵션.

rsync --relative /a/b/./c/xxxxx.sql /a/b/d/

.구분된 경로가 시작되어야 하는 위치를 기록해 두십시오 --relative.

전체 디렉터리( )를 이동하려면 파일을 재귀적으로 복사하도록 플래그를 c추가하는 것을 잊지 마세요 .--recursive

답변4

자신만의 명령을 실행할 수도 있습니다. 이는 기능적 구현이지만 실행 가능한 스크립트 어딘가에 변형을 똑같이 넣을 수도 있습니다.$PATH

mdcopy() {
    mkdir -p -- "$2" &&
        cp -p -- "$1" "$2"
}

용법

mdcopy /a/b/c/xxxxx.sql /a/b/d/c

이 접근 방식의 한 가지 장점은 원하는 유틸리티를 얻을 수 있다는 것입니다. 이 구현에는 두 번째 인수로 디렉터리가 필요하지만 파일 경로 이름을 두 번째 인수로 예상하도록 동일하게 조정할 수 있습니다. 이것이 당신에게 가장 좋은 것입니다.

관련 정보