한 위치에서 다른 위치로 약 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 ...
답변
또 다른 방법은 find 와 mkdir입니다 .
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-)
줄 바꿈 문자가 포함 된 파일 이름이없는 경우 (직접 가능하지는 않지만) -print0
find 명령 행 또는 -0
rsync 명령 행 에는 실제로 필요하지 않습니다 . Tar (및 rsync 및 cpio)은 파일 이름을 한 줄씩 읽습니다. NULL 종결자를 사용하는 것은 주로 xargs
공백으로 분리 된 파일 이름을 읽는 (와 함께 이름이 공백 인 파일 / 디렉토리를 처리하지 않는) 와 함께 유용합니다 -0
.
답변
(cd /home/user/source/; find -type d -print0) | xargs -0 mkdir -p
답변
cp -al
하드 링크가있는 모든 파일을 복사합니다. 동일한 구조, 동일한 권한. (참고 : 하드 링크이므로 스토리지 손실이 없습니다.)