폴더, 하위 폴더, 하위 하위 폴더 및 하위 하위 하위 폴더의 분기 트리로 구성된 거대한 데이터가 있습니다. 터미널 하위 폴더에는 많은 수의 이미지(~2000개 이미지, 파일당 ~5-kib)가 있어 폴더 열기가 매우 어렵고 느려집니다. 이 이미지는 전통적인 이미지가 아닙니다. 정보가 포함된 헤더가 있습니다. 이 제목은 모든 이미지에 공통적으로 적용됩니다. 데이터가 오래되고 성능이 떨어지는 서버에 있습니다.
더 나은 성능을 제공하는 다른 서버에 트리를 복사하고 각 하위 폴더의 파일(모든 파일)을 새 서버에 복사하고 싶습니다.
나는 사용했다
rsync -av -f"+ */" -f"- *" /path/to/src ssh [email protected]:/path/to/dest/
이 명령은 실제로 새 서버에 새로운 빈 트리를 만듭니다. 내 질문은 다음과 같습니다
폴더당 하나의 파일/모든 파일을 동기화하도록 이 명령을 수정하려면 어떻게 해야 합니까?
내 질문은 플래그로 정의된 역할에 더 중점을 두고 있습니다. 각 폴더와 하위 폴더의 파일을 동기화하라는 새 f
역할에 대한 새 플래그를 어떻게 추가합니까 ?f
rsync
cp
mv
또는 가 포함된 솔루션 을 사용할 수 없습니다 find
. 이전 서버에서 이러한 명령과 많은 데이터를 실행하는 데 시간이 오래 걸립니다!
답변1
당신 후에 이것을 하십시오동기화주문하다
find /path/to/src -type d | while read D; do F=$(find ${D} -maxdepth 1 -type f | head -1); test -z ${F} || cp ${F} "/path/to/dest$(echo ${F#path/to/src})"; done
파일이 포함된 모든 디렉터리의 첫 번째 파일이 복사됩니다.