소스 파일:~/SCRIPTS/script
대상 디렉터리:~/TMP/LAB
명령은 다음과 같아야 합니다.<command> <option> ~/SCRIPTS/script ~/TMP/LAB
명령 후 예상 결과:~/TMP/LAB/SCRIPTS/script
이렇게 해도 소용없어
<command> <option> ~/SCRIPTS/script ~/TMP/LAB/SCRIPTS/
왜냐하면 소스 파일을 변경할 때마다 명령을 편집해야 하기 때문입니다. 기본적으로 생성하려는 대상이 아닌 소스에서 찾은 구조를 기반으로 디렉터리를 생성하는 명령을 원합니다.
명령은 다음과 같아야 합니다.
- ~/TMP/LAB/SCRIPTS/ 생성
- ~/SCRIPTS/script를 복사하세요.
cp --parents
이렇게 하세요. 단, 디렉토리를 복사할 때만 해당됩니다.
install
당신이 나를 위해 그것을 할 수 있는지 궁금해요 ? 아니면 어쩌면 rsync
?
답변1
cp --parents
GNU가 있다면 그것을 사용할 수 있을 것입니다 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
소스가 파일이더라도 상위가 생성되는 것으로 나타났습니다 .