보다 일반적인 액세스를 위해 컴퓨터에서 수집된 데이터 파일을 중앙 NFS 서버로 이동하는 자동화된 스크립트가 있습니다. 최근에 파일의 약 1%를 이동할 수 없으며 mv가 이미 존재하는 파일에 대한 오류를 보고하는 것을 발견했습니다.
mv: cannot create regular file `/mnt/data/2015/20150410_004130.dat': File exists
문제는 이전까지 파일이아니요mv가 생성을 시도한 후에는 존재하지만 크기는 0, 권한은 0000, 날짜는 1970년대입니다(정확한 날짜는 이런 일이 발생할 때마다 조금씩 늘어나는 것 같습니다).
mv
run 을 사용 하도록 스크립트를 업데이트했는데 strace
실제 실패가 발생할 때까지 실패는 성공과 똑같이 보입니다.
- 직접 이름을 바꿔보세요. 실패(기기 간 링크가 작동하지 않음)
- 대상 연결을 해제합니다. 실패함(해당 파일이나 디렉터리가 없음)
- 읽을 수 있는 오픈 소스 문서
- O_WRONLY|O_CREAT|O_EXCL, perms 0600 옵션을 사용하여 대상 파일을 엽니다. 일반적으로 작동하지만 때때로 "파일이 존재합니다"라는 주장이 실패합니다.
나는 데이터 파일이 완료된 후(실제로는 다른 서버로 이동하는) 데이터 파일을 처리하는 다른 스크립트가 있지만 다른 어떤 것도 이 파일을 생성하려고 시도해서는 안 된다고 확신합니다.
이 동작은 NFS 서버에서 Ubuntu 10.04에서 Ubuntu 14.04로 업데이트한 것과 동시에 시작된 것 같습니다(클라이언트 구성은 변경되지 않았습니다).