파일과 해당 상위 디렉터리를 대상 디렉터리에 복사합니다.

파일과 해당 상위 디렉터리를 대상 디렉터리에 복사합니다.

소스 파일:~/SCRIPTS/script

대상 디렉터리:~/TMP/LAB

명령은 다음과 같아야 합니다.<command> <option> ~/SCRIPTS/script ~/TMP/LAB

명령 후 예상 결과:~/TMP/LAB/SCRIPTS/script

이렇게 해도 소용없어

<command> <option> ~/SCRIPTS/script  ~/TMP/LAB/SCRIPTS/

왜냐하면 소스 파일을 변경할 때마다 명령을 편집해야 하기 때문입니다. 기본적으로 생성하려는 대상이 아닌 소스에서 찾은 구조를 기반으로 디렉터리를 생성하는 명령을 원합니다.

명령은 다음과 같아야 합니다.

  1. ~/TMP/LAB/SCRIPTS/ 생성
  2. ~/SCRIPTS/script를 복사하세요.

cp --parents이렇게 하세요. 단, 디렉토리를 복사할 때만 해당됩니다.

install당신이 나를 위해 그것을 할 수 있는지 궁금해요 ? 아니면 어쩌면 rsync?

답변1

cp --parentsGNU가 있다면 그것을 사용할 수 있을 것입니다 cp.

bash-5.1$ tree
.
|-- SCRIPTS
|   |-- otherfile
|   `-- script
`-- TMP
    `-- LAB

3 directories, 2 files
bash-5.1$ cp --parents SCRIPTS/script TMP/LAB/
bash-5.1$ tree
.
|-- SCRIPTS
|   |-- otherfile
|   `-- script
`-- TMP
    `-- LAB
        `-- SCRIPTS
            `-- script

4 directories, 3 files

제안한 대로 () 옵션을 사용하면 rsync다음과 같이 할 수 있습니다.-R--relative

bash-5.1$ rm -r TMP/LAB/SCRIPTS/
bash-5.1$ rsync -R SCRIPTS/script TMP/LAB/
bash-5.1$ tree
.
|-- SCRIPTS
|   |-- otherfile
|   `-- script
`-- TMP
    `-- LAB
        `-- SCRIPTS
            `-- script

4 directories, 3 files

두 변형 모두 상대 경로가 아닌 절대 경로를 ~/SCRIPTS/script소스로 사용하면 SCRIPTS/script대상의 절대 경로에 해당하는 디렉터리가 생성되고 결국 TMP/LAB/home/myself/SCRIPTS/script.

먼저 해당 디렉토리를 해당 디렉토리가 포함된 디렉토리로 변경하면 이 문제를 피할 수 있습니다 SCRIPTS.

답변2

cp --parents소스가 파일이더라도 상위가 생성되는 것으로 나타났습니다 .

관련 정보