Linux에서 파일이 아닌 디렉토리 트리를 어떻게 복사합니까?


17

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

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

답변:




5

또 다른 방법은 findmkdir입니다 .

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

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


3

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

find inputdir -type d | cpio -pdumv destdir

단순성의 힘;)


1

마찬가지로 (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.



-1
cp -al 

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


파일 시스템 경계를 가로 질러 하드 링크를 만들 수 없습니다
MountainX-for-Monica

사실, 그것은 파일 시스템에 걸쳐 있다고 말하지 않았습니다 ...
SvennD

-1

ls -d * / @source : find. -type d -print0> dirs.txt @destination : xargs -0 mkdir -p

이로 인해 두 명령 모두 공백 대신 구분 기호로 null을 사용합니다. -type d 및 -print0의 순서가 중요합니다!


이것은 명확하지 않으며 잘못된 것 같습니다. 것 같습니다 @source그리고 @destination독자에 표시가 있지만, 그렇다고하더라도이 일 수 없습니다.
법률 29
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.