Linux에서 파일이 아닌 디렉토리 트리를 어떻게 복사합니까? 및 서브 디렉토리를 복사하려고하지만 해당 디렉토리에있는

한 위치에서 다른 위치로 약 200 개의 디렉토리 및 서브 디렉토리를 복사하려고하지만 해당 디렉토리에있는 수천 개의 파일을 복사하고 싶지 않습니다. 저는 Linux에 있습니다.

참고 : 모든 것을 복사 한 다음 모든 파일을 삭제하기에 충분한 공간이 없습니다.



답변

방금 이것을 찾았습니다 :

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 ...


답변

또 다른 방법은 findmkdir입니다 .

find SOURCE -type d -exec mkdir TARGET/{} \;

TARGET이 이미 있는지 확인하거나 mkdir의 -p 옵션을 사용하십시오.


답변

당신은 또한 할 수 있습니다 :

find inputdir -type d | cpio -pdumv destdir

단순성의 힘;)


답변

마찬가지로 (GNU) tar 사용 :

find some/dir -type d -print |
tar --no-recursion -T- -c -p -f- |
(cd another/dir && tar -x -p -f-)

줄 바꿈 문자가 포함 된 파일 이름이없는 경우 (직접 가능하지는 않지만) -print0find 명령 행 또는 -0rsync 명령 행 에는 실제로 필요하지 않습니다 . Tar (및 rsync 및 cpio)은 파일 이름을 한 줄씩 읽습니다. NULL 종결자를 사용하는 것은 주로 xargs공백으로 분리 된 파일 이름을 읽는 (와 함께 이름이 공백 인 파일 / 디렉토리를 처리하지 않는) 와 함께 유용합니다 -0.


답변

(cd /home/user/source/; find -type d -print0) | xargs -0 mkdir -p


답변

cp -al

하드 링크가있는 모든 파일을 복사합니다. 동일한 구조, 동일한 권한. (참고 : 하드 링크이므로 스토리지 손실이 없습니다.)