다양한 방법을 검색하고 시도한 후에도 제대로 작동하지 않습니다.
많은 수의 파일(100,000개 이상의 파일)을 다른 폴더에 복사하고 파일 이름 시작 부분에 점을 추가해야 합니다.
예:
/foo/bar/filename1.txt
도착하다/foo2/bar/.filename1.txt
- 그런 다음 원래 이름으로 다시 이름을 바꿉니다.
/foo2/bar/filename.txt
이 작업을 수행해야 하는 이유는 폴더를 계속 검색 /foo2/bar
하고 파일 이름 앞에 점이 있는 파일을 무시하여 복사 중인 파일을 처리하지 않도록 하는 응용 프로그램이 있기 때문입니다. 이는 주로 이 2개의 폴더가 2개의 서로 다른 네트워크 드라이브 또는 일부 마운트된 장치에 위치할 수 있기 때문입니다.
너무 많은 파일이 포함된 일부 폴더가 있고 인수 목록이 너무 긴 오류가 발생하기 때문에 단순히 mv 또는 cp를 사용할 수 없습니다. 그래서 find 명령을 사용해 보았지만 소용이 없었습니다.
다른 명령을 사용해 보십시오:
find /foo/bar/ -type f -exec cp -t /foo2/bar {} +
그리고
find /foo/bar/ -type f -exec mv {} /foo2/bar/.{} \;
나는 위의 명령이 내가 원하는 것을 하지 않을 것이라는 것을 알고 있으며 그것이 내가 지쳤던 것입니다.
도움을 주실 수 있는 분에게 감사드립니다...
답변1
rsync -a -T tmpdir /foo/bar/ /foo2/bar
/
( 마지막 내용이 중요하니 참고해주세요 /foo/bar/
.)
유틸리티는 파일을 올바른 이름으로 이동하기 전에 파일에 기록합니다 rsync
. 예를 들어 다음 숨겨진 디렉터리를 사용하여 전송 중인 파일을 저장할 수 있습니다.tmpdir
/foo2/bar
/foo2/bar
mkdir -p /foo2/bar/.tmp
rsync -a -T /foo2/bar/.tmp /foo/bar/ /foo2/bar
또한 rsync
설명서, 특히 이 옵션에 대한 섹션을 참조하세요 -T
.
위 명령은 재귀를 /foo/bar
에 복사합니다 /foo2/bar
. 재귀를 비활성화하려면 다음을 사용합니다 rsync -a --no-recursive ...
(이 -a
옵션은 재귀와 파일 메타데이터 동기화를 활성화하고 --no-recursion
재귀 측면만 끕니다 -a
).