많은 양의 파일 이동 (~ 100,000)


13

폴더 당 100 000 개 또는 1,000,000 개의 파일과 같이 많은 파일이 포함 된 폴더를 사용합니다. 폴더의 내용을 다른 폴더로 이동하려고하면 컴퓨터가 항상 멈 춥니 다. 프로세스가 완료된 경우에도 노틸러스가 완전히 정지 된 것으로 보이므로 컴퓨터를 강제로 다시 시작해야하므로 폴더의 내용을 볼 수 없습니다. 나는 이것이 10,000 파일처럼 이동하려고 할 때도 발생한다는 것을 알았습니다.

내 컴퓨터에 문제가 있습니까? 아니면이 숫자로 작업 할 때 정상입니까?

이 파일 전송을 수행하는 현명한 방법은 무엇입니까?


3
무엇 터미널 (사용에 대한 cp -R SRC/ DEST/)
UniversallyUniqueID

2
@BharadwajRaju : 파일에 따라 cp -a는 소유자, 타임 스탬프 및 권한을 보존하기 때문에 더 나을 수 있습니다. 또한 전송을 확인할 수 있고 아직 존재하지 않는 파일 만 복사 할 수 있기 때문에 rsync를 권장합니다.
Michael

업데이트 : gvfs-copy( gvfs-bin패키지에서)보다 빠를 수 있습니다 cp.
UniversallyUniqueID

여기에 하나가 아닌 두 가지 질문이 있습니다. 자세한 내용은 How To Ask 페이지를 확인하십시오 .
Luís de Sousa

답변:


19

아마도 대량의 파일을 전송하기 위해 순수한 명령 줄 방법을 사용하는 것을 고려할 것입니다. 의심 할 여지없이 프로세스는 GUI를 사용하는 것보다 훨씬 빠릅니다.

이를 수행하는 방법에는 여러 가지가 있지만 다음은 내 시스템에서 빠르고 안전하며 효율적으로 작동했습니다.

find . -maxdepth 1 -type f -print0 | xargs -0 mv -t <destination>

이 명령에 대한 설명 :

  1. 입력 디렉토리는 '.'입니다. 이 특정 명령의 경우 해당 디렉토리에 있어야합니다.
  2. 귀하의 출력 디렉토리는 <destination>내 예입니다. 자신의 필요에 맞게 이것을 수정하고 대괄호를 생략하십시오.
  3. 이 구문은 공백이있는 파일 이름을 보너스로 허용합니다. :)

끝없는 순열이 가능하지만 GUI보다 훨씬 효율적으로 작동합니다 . 예를 들어 하나의 순열 : pdf 파일 이동 하려면 다음을 실행할 수 있습니다.

find . -iname "*.pdf" -maxdepth 1 -type f -print0 | xargs -0 mv -t <destination>

xargs이러한 많은 수의 파일을 사용하면 특히 많은 가능성 이 열립니다. 많은 가능성 ....

잠재적 인 문제 :

이러한 의견에 대한 아래의 의견 제시 자들 덕분에 숙고해야 할 잠재적 함정이 적어도 두 가지 있습니다.

  1. 대상 디렉토리가 손상되어 이후에 도달 할 수없는 위치에 잘못 입력 mv된 파일 등 이 여전히 파일을 이동시킵니다! 여기서 조심하십시오 ...
  2. 경우 -t옵션 ( --target-directory)없는 및 대상 폴더가 실제로 파일 하나 개의 파일을 이동하고 나머지에 실패합니다. 소스의 이름 을 대상으로 바꾸 거나 소스를 디렉토리 로 이동 하는 mv두 가지 용도가 있습니다. 다시 조심하십시오 ...

2
그냥 find . -maxdepth 1 -type f -exec mv -t test {} +하지 않습니까?
muru

@ muru : 고마워요, 나는 다른 -name...조각으로 손질 했지만 그 xargs자리에 남았습니다 .
andrew.46

2
모르겠다 ... 명령이 그대로 정확하지만 전체 이동이 약간 오류가 발생하기 쉽다고 생각합니다. (당신은, 예를 들어, 포함하는 것을 잊지 경우 어떻게 -t플래그를? 나는 모든 파일이라는 하나 개의 파일에 "이동"할 것이라고 생각 test제외한 모든 파일의 손실의 결과.) 나는 내가 선호하는 생각 rsync다음에, 모든 것이 올바르게 진행 되었다면 rm. 그러나 그러한 검사를 자동화 할 수없는 시나리오를 상상할 수 있습니다.
Jos

@Jos : 감사합니다.이 가능성을 설명하는 바닥 글 메모를 추가했습니다. rsync 답변으로 작성된 예제 를 보니 좋습니까?
andrew.46

Linux는 매우 긴 인수 목록을 지원하므로, 할 수 있으며 문제가 있거나 glob와 폴더가 일치하지 않는 경우 mv dir1/* dir2에만 의지 할 find -exec수 있습니다. (네이밍 규칙에 따라, *.*대부분의 파일과 일치하지만 대부분의 디렉토리와 일치하지는 않습니다. 왜냐하면 .extension온 파일은 일반적이고 .디렉토리 이름 은 포함하지 않기 때문입니다 )
Peter Cordes

4

나는 비슷한 경험을 가지고 있었지만 많은 파일을 다룰 때 일반적입니다. PDF 데이터 시트 (전자 부품)가 많이 수집되었습니다.

GUI 도구는 일부 파일 세부 정보 및 메타 데이터 (아이콘 / 섬네일, 크기 등)를 확인합니다.이 경우 큰 문제가 될 것입니다. 심지어에서 아이콘보기 대부분이 같은 극단적 인 경우를 위해 설계되어 있지 않기과 썸네일없이, 그들은 동결됩니다. GUI 도구는 디렉토리의 모든 파일 / 폴더에 대한 프리젠 테이션 아이콘을 현재 화면 부분에서 사용자에게 보이지 않더라도로드하려고 시도합니다. 정렬 은 또한 문제의 일부이며이를 피할 수있는 방법은 없습니다.

  • 나는 10000 미만의 브랜드 / 모델을 기반으로 파일 폴더를 별도의 폴더에 분할합니다. 날짜 (대부분의 사람들이 사진 / 스캔으로 수행) 또는 첫 글자 ( 우분투 패키지 저장소 에서와 같이 )를 사용할 수 있습니다
  • 요청한 내용 만 표시하므로 CLI 도구를 사용하는 것이 더 쉽습니다. locate대신 빠른 검색에 사용할 수 있습니다 find.
  • 이동 조작의 경우 mv터미널 에서 사용하십시오 (GUI 도구는보기를 주기적으로 업데이트하려고하기 때문에 속도가 느립니다).

    동일한 파티션에있는 경우 명령은 파일 시스템 색인의 포인터 만 변경합니다. 그렇지 않으면 이중 작업 (복사 및 삭제)이됩니다. 비싸다.

도움이 될 수있는 경우는 한 가지뿐입니다. 해당 파일을 여러 번 복사하고 업데이트하지 않은 경우. 컬렉션을 친구와 공유 할 때와 마찬가지로 복사하려고 할 때마다 10 년이 걸립니다. (이것은 작은 크기의 파일에만 유용합니다)

  • 압축이 없거나 압축이없는 zip과 같은 단일 패키지 또는 몇 개의 패키지를 작성하십시오. 복사하면 속도가 빨라지므로 DMA에서 작업을 수행하십시오.

3

GUI 느낌과 유연성이 결합 된 명령 줄 작업의 이점을 제공하는 솔루션을 찾고 있다면 mc( 자정 사령관 ) 권장 합니다.

mc 사령관 2 창보기

ncurses 기반의 비주얼 파일 관리자입니다. 파일에 대한 두 개의 창보기와 사용 가능한 메뉴가 있습니다. ssh에서도 마우스를 사용할 수 있습니다. fs를 탐색하고, 파일 뷰어로 파일을 검사하고, 기준에 따라 필터링하고, 명령 줄에서 복사 또는 이동 작업을 수행 할 수 있습니다.

그것은 80 년대 중반에 인기가 있었던 DOS 프로그램 노턴 사령관 의 복제품입니다 . GUI가 신뢰할 수 없게 될 때마다 잘 작동하며 목적에 이상적입니다.


0

다소 비슷한 문제가 발생했습니다. RAID 설정을 테스트하고 있었으며 전송 (예 : 100,000 개 이상의 파일 및 1-2TB의 데이터를 한 번에 한 번에 전송) 할 때 전송이 상당히 빠른 것처럼 보입니다. ~ 200MB / 초, 그런 다음 ~ 90-120MB / sec의 적당한 수준으로 빠르게 속도를 늦 춥니 다 (드라이브에서 일부 플래시 캐시 스토리지를 사용한 후). 그런 다음 20-30 분 후에 작업이 점차 ~ 30-40MB / 초로 훨씬 더 낮은 고원으로 떨어지기 시작합니다. 작은 파일을 처리 할 때 더 악화됩니다 .4-5 시간 작업은 15 시간에 가깝습니다.

예를 들어 드라이브 결함과 같은 진단에 시간을 보냈습니다. 다른 도구 (명령 줄, 노틸러스)를 시도했지만 매우 큰 복사 작업을 위해 적절한 처리량을 유지할 수 없었습니다.

나에게 가장 효과적인 것은 자정 사령관을 사용하는 것이었고 복사가 느려질 때마다 보류중인 작업이 플러시 된 후 (일반적으로 1 분 정도) 하드 드라이브 표시등이 꺼질 때까지 작업을 일시 중지 한 다음 MC를 다시 일시 중지합니다. 20-30 분 동안 적절한 속도로 다시 쏠 것입니다. 오히려 성가시다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.