답변:
방금 이것을 찾았습니다 :
rsync -a -f"+ */" -f"- *" source/ destination/
http://psung.blogspot.com/2008/05/copying-directory-trees-with-rsync.html
find some/dir -type d -print0 | rsync --files-from=/dev/stdin -0 ...
또 다른 방법은 find 와 mkdir입니다 .
find SOURCE -type d -exec mkdir TARGET/{} \;
TARGET이 이미 있는지 확인하거나 mkdir의 -p 옵션을 사용하십시오.
마찬가지로 (GNU) tar 사용 :
find some/dir -type d -print |
tar --no-recursion -T- -c -p -f- |
(cd another/dir && tar -x -p -f-)
줄 바꿈 문자가 포함 된 파일 이름이없는 경우 (직접 가능하지는 않지만) -print0
find 명령 행 또는 -0
rsync 명령 행 에는 실제로 필요하지 않습니다 . Tar (및 rsync 및 cpio)은 파일 이름을 한 줄씩 읽습니다. NULL 종결자를 사용하는 것은 주로 xargs
공백으로 분리 된 파일 이름을 읽는 (와 함께 이름이 공백 인 파일 / 디렉토리를 처리하지 않는) 와 함께 유용합니다 -0
.
cp -al
하드 링크가있는 모든 파일을 복사합니다. 동일한 구조, 동일한 권한. (참고 : 하드 링크이므로 스토리지 손실이 없습니다.)
rsync -a --include='*/' --exclude='*' ${source} ${destination}
.