무슨 일이 일어날 경우 Perl 호출을 시도 이동()파일을 업로드되는?

StackOverflow https://stackoverflow.com/questions/808419

  •  03-07-2019
  •  | 
  •  

문제

누군가가 FTPing 파일의 크기 10Mb 폴더에 리눅스 서버입니다.하는 동안 파일 전환 cron 이 깨어나면 불을 끄는 Perl 스크립트는 설계를 살펴 ftp 폴더로 이동 무엇이든 그것이 일부 다른 폴더에 있습니다.내가 사용하는 move() 에서 기능 파일::복사.Perl 프로세스는 실제로 이름을 바꾸는 파일의 한 부분으로 그 작업입니다.지 않는 문제,또는 FTP 지 관리 어떤 파일 시스템을 설명하는 파일로?

move() 성공하는 이동 부분적인 파일을 떠나,FTP 무엇을 할까?또는 이동할 것이 실패 반환 0?

도움이 되었습니까?

해결책

No,이동해야 그냥 다운로드를 완료 프로세스에 새로운 위치입니다.당신은 그냥 움직이는 아이노드에서 하나 위치합니다.오픈 설명자 파일에서 다운로드 프로그램도 포인트다.

그냥 무엇을 반복 몇 사람이 언급했다.이만큼 이동 작업에 같은 파일시스템입니다.는 경우 그것은 또 다른 파일시스템상의 아이노드 전송할 수 없기 때문에 그것은 항상 그리고 같은 파일시스템입니다.의 대부분의 아마 시나리오는 다음이 될 것이라고 부분에서 데이터는 순간에 복사하는 새로운 위치하는 동안 여전히 프로그램 다운로드에 inode 지 않는 더 이상에 첨부하는 파일과 그에 대한 사용할 수 없습니다.

다른 팁

표준이 없기 때문에 move, 시나리오에서 무슨 일이 일어나고 있는지 알기가 어렵습니다. 당신이 의미한다면 rename, 상황이 잘못 될 주요 방법은 한 파일 시스템에서 다른 파일 시스템으로 이동하는 경우 (따라서 실제 이동이 아닌 카피 앤 델리트를 수행하는 경우) 문제가 없을 것입니다. 그리고 대부분의 시스템에서 rename 그러한 상황에서 실패합니다. (따라서 설정이 전혀 작동하면 괜찮을 것입니다.)

사용하지 않는 경우 rename 그러나 일부 move 예를 들어, 파일 시스템을 가로 질러 이동하는 기능을 처리하면 여러 파일 시스템이 관련되어 있으면 부분 파일이 잘 맞을 수 있습니다. (예를 들어, 당신이 지금 하나의 파일 시스템에 있다면, 이것은 매우 불쾌한 gotcha가 될 수 있지만 나중에이 파일에서 업로드하는이 파일에서 많은 공간을 차지하고 저장 전용 드라이브를 추가합니다. 그리고 지금 당신은 크로스 파일 시스템 이동을하고 있습니다.)

나는 확실하지 않지만 아마도 아마도 잘못된 일이 일어나지 않을 것입니다. 이동은 파일 inode 번호를 변경하지 않으므로 FTP 서버가 전혀 이동을 눈치 채지 못하고 새 위치의 파일에 계속 쓸 것입니다. 곧 넣으려면 move() 성공하면 새로운 위치에서 업로드가 계속됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top