수천 개의 파일에서 가져온 JPG 슬라이딩 창

수천 개의 파일에서 가져온 JPG 슬라이딩 창

내 컴퓨터에는 매일 수천 개의 jpg 파일을 촬영하는 카메라가 장착되어 있습니다. 와 같은 클라우드 스토리지 사이트를 통해 데이터를 저장하는 방법을 찾고 있습니다 box.com.

마지막 5분 분량의 파일을 마운트된 원격 드라이브(davfs2)에 1분마다 복사한 다음 10분마다 1시간 이상 된 파일을 삭제하는 것이 좋은 해결책이라고 생각했지만 이는 큰 문제를 야기합니다. 내 컴퓨터가 SSH를 통해 연결할 수 없게 되어 컴퓨터를 종료해야 합니다.

이제 파일을 삭제하려고 해도 마운트된 드라이브에 다시 복사됩니다. 드라이브를 마운트 해제해야 했지만 davfs2 캐시를 지울 수 없는 것 같습니다.

내 접근 방식에 근본적으로 잘못된 것이 있습니까?

나는 이것을 내 crontab에 넣었습니다.

*/1 * * * * sudo find /mnt/ -type f -cmin -5 -exec cp -pn '{}' /home/pi/box/street_pictures/ \;
*/10 * * * *  sudo find /home/pi/box/street_pictures -cmin +60 -type f -exec rm '{}' \;

/nmt수천 장의 사진이 들어 있는 폴더입니다. /home/pi/box/street_pictures내가 설치한 드라이브입니다.

답변1

sudo? 어쨌든 루트로 실행 중이라면 루트 crontab에 넣으시겠습니까?

수천 개의 파일이 포함된 (원격) 디렉터리를 검색하는 데 시간이 오래 걸릴 수 있습니다. 1분 이상 소요되는 경우 여러 크론 작업이 동시에 실행되어 리소스를 놓고 경쟁할 수 있으며 많은 원격 파일 시스템이 동시 액세스를 제대로 처리하지 못할 수 있습니다.

동시 크론 작업을 방지하려면 일종의 잠금 메커니즘을 사용하거나, 끝없이 실행되므로 서비스 스크립트에 넣을 수 있습니다.

while [ 1 ]
do
    sleep 60 &
    cp jpg stuff
    wait # for sleep in case 60 seconds have not yet passed
done

복사한 파일의 이름을 무시된 하위 디렉터리로 바꿀 수 있을까요?

-exec {} \;그다지 효율적이지도 않습니다( cp각 파일에 대해 새 프로세스 시작). -exec cp --target-directory=/home/pi/... {} +프로그램이 이러한 옵션을 지원하는 경우 대신 시도해 보십시오.

파일 이름이 어떤 방식으로든 예측 가능한 경우(날짜 또는 증분 숫자 포함) 불필요하거나 시간이 많이 걸리는 파일 속성을 피하기 위해 타임스탬프보다는 파일 이름을 사용하는 것이 더 효율적일 수 있습니다 stat().

관련 정보