Windows 7을 사용하는 경우 공유 폴더가 설정된 서버가 있습니다. 그 중 하나를 열고 파일을 가져와 하위 폴더로 이동하면 즉시 발생합니다. 파일은 서버에서만 이동되는 것입니다. 동일한 공유 폴더가 열려 있는 두 개의 창에 대해서도 마찬가지입니다.
반면에 동일한 서버에서 다른 공유 폴더를 열고 그 사이에 파일을 이동하는 경우 시간이 매우 오래 걸립니다. 이는 첫 번째 공유에서 임시 폴더에 있는 내 컴퓨터의 파일을 다운로드한 다음 다른 공유에 업로드하는 것과 같습니다. .
내 컴퓨터가 중간에 파일을 다운로드하지 않고 이와 같은 다른 공유 간에 파일을 이동할 수 있는 방법이 있습니까? 파일이 꽤 큰 경우가 많기 때문에 속도가 좀 필요합니다.
답변1
"다른 공유 폴더"라고 하면 "다른 파일 공유(예: 다른 매핑된 드라이브)에 있는 폴더"를 의미합니까? 그렇다면 그게 문제이고, 쉽고 마법 같은 해결책은 없습니다. 때를이동하다한 폴더에서 다른 폴더로의 파일같은 볼륨에, 필요한 작업은 운영 체제가 대상 폴더에 새 디렉터리 항목을 쓰고 원본 폴더의 이전 디렉터리 항목을 지우는 것뿐입니다. 즉, 파일 데이터에 액세스할 필요가 없습니다. 때를복사파일이 있는 경우 OS는 각 데이터 블록을 읽고 이를 새 위치에 써야 합니다. 그리고 볼륨 간 이동은 물리적으로 분리된 디스크 간 이동일 수도 있습니다. 디렉터리 항목은 다른 볼륨의 데이터 블록을 가리킬 수 없기 때문에 원본 파일을 삭제한 후 복사본으로 처리해야 합니다.
PS 아이러니하게도 물리적으로 분리된 디스크 간의 이동은더 빠르게후자의 경우 디스크 I/O 헤드가 소스 실린더와 대상 실린더 사이를 앞뒤로 점프해야 하기 때문입니다.
답변2
비록 잔치에 늦었지만 그래도 레시피는 여기 있습니다.몇 가지 전제 조건이 있는 실용적인 방법.
핵심 아이디어이는 서버에게 특정 위치(물론 하나의 Samba 공유에 있음)의 개체를 이동하라고 지시하는 것입니다.또 다른위치(물론또 다른삼바 공유).
inotifywait
은(는) 요리사이고while
,read
, 이라는 조리기구를 가지고 있습니다mv
. 저 사람이 우리 저녁 식사 팀이에요.그리고 부엌(혹은 식당)은 다음과 같습니다:
Samba shares ├─share.1 │ ├─recv │ ├─to.share.2 │ ├─to.share.3 │ └─[...] ├─share.2 │ ├─recv │ ├─to.share.1 │ ├─to.share.3 │ └─[...] ├─share.3 │ ├─recv │ ├─to.share.1 │ ├─to.share.2 │ └─[...] └─[...]
예를 들어 share.x에 로그인한 사용자입니다. 사용자가 share.x 내부의 항목을 share.y로 이동/복사하려는 경우 작업은 다음과 같습니다.
share.x 내부의 개체를 선택하고 으로 이동/복사합니다
share.x/to.share.y
.서버는 을(를)
to.share.*
사용하여 해당 폴더를 모니터링하므로inotifywait
이제 작업할 시간임을 알 수 있습니다.서버는 내부의 개체를
share.x/to.share.y
으로 이동합니다share.y/recv
.완료!
전제 조건에는 위와 같은 특정 폴더 구조, 실제 작업을 수행하기 위해 서버에서 실행되는 작업/서비스/스크립트가 포함됩니다 mv
.
여러분과 공유할 나만의 스크립트 코드가 있지만 개선해야 할 부분이 많이 있습니다.
inotifywait -m "$source_dir" --format '%w%f' -e moved_to,create,modify | while read file; do mv -v "$file" "$dest_dir"; done
이를 수정 $source_dir
하고 $dest_dir
필요에 맞게 수정하십시오.
나는 supervisor
"Samba 순간 이동"을 만들기 위해 위와 같은 여러 스크립트를 관리하는 데 사용합니다. 을 잘 모르신다면 supervisor
참고하세요.http://supervisord.org/그리고 그것에 대한 다른 답변.
답변3
가장 쉽고 빠르고 더러운 방법은 서버 자체에서 수행하거나 두 대상 공유가 모두 하위 폴더로 있는 공유를 만드는 것입니다(예: \\servername\c$
).