나는 다음과 같은 나무를 가지고있다
# upper letters = directory
# lower letters = files
A
|-- B
|-- C
|-- D
|-- e <= file
|-- F
|-- G
빈 트리를 재귀 적으로 무시하면서이 트리를 다른 대상으로 복사해야합니다. 그래서 목적지는 다음과 같이 보입니다.
C
|-- e
유닉스, rsync 등으로 어떻게 이것을 할 것입니까?
답변
물론 몇 분 후 나는 쉬운 방법을 발견했다. rsync
이 --prune-empty-dirs
옵션을 선택합니다.
답변
이 문제에 대한 다양한 솔루션이 있습니다 ( 이 웹 페이지 에서 가져옴 ).
이 옵션은 mkdir 명령을 find 명령과 함께 사용합니다. 이 방법을 사용하려면 명령을 실행하는 동안 소스 폴더 안에 있어야합니다.
bash$ cd /path/to/source && find . -type d -exec mkdir -p /path/to/dest/{} ;
find와 cpio 사용
bash$ find /path/to/source -type d | cpio -pd /path/to/dest/
Rsync 사용
bash$ rsync -a --include '*/' --exclude '*' /path/to/source /path/to/dest
또는
bash$ rysnc -a -f"+ */" -f"- *" /path/to/source /path/to/dest