Acest fisier este pentru agentii si toolurile care folosesc acest repository ca baza pentru importuri media automate, inclusiv rulari unattended din udev, systemd, cron, pipeline-uri NAS sau wrapper-e generate.
Scriptul principal validat este:
media-importer.sh
Prototipurile Raspberry Pi / unattended wrapper au fost eliminate din repository deoarece erau bazate pe o versiune invechita si netestata a importerului. Nu le recreati si nu le folositi ca reference design fara o decizie explicita de reluare a acelei directii.
Au existat pierderi reale de date in mediul nostru cu versiuni anterioare ale importerului. Incidentul documentat in INCIDENTS.md a fost declansat de fisiere GoPro chapter care au ajuns sa fie mapate la acelasi nume destinatie. Scriptul vechi a continuat dupa conflict, copia/mutarea a suprascris destinatia existenta, verificarea a validat fisierul suprascris, iar sursele au fost sterse.
Orice agent care copiaza, deriva, rescrie sau integreaza acest script intr-un tool unattended trebuie sa verifice explicit ca nu reintroduce bugurile care au dus la acea pierdere de date.
media-importer.sh.cp, mv, rsync sau alte unelte lasate sa rezolve singure conflictele de destinatie. Conflictele trebuie rezolvate in cod inainte de operatie.copy -> verify -> delete source; nu inlocuiti acest flux cu mv direct in scripturi unattended._1, _2, ...), skip explicit sau abort. Nu este acceptat overwrite silentios.Inainte ca o copie sau derivare sa fie folosita unattended, verificati ca include echivalentul acestor protectii:
safe_cp si safe_mv refuza destinatii existente.VERIFY_MODE=size este default; strict este disponibil pentru comparatie byte-to-byte.resolve_destination_conflict / ensure_unique_destination_path sau logica echivalenta.timestamp-collision trece.Pentru orice schimbare care atinge importul, copierea, mutarea, verificarea, stergerea sursei, generarea numelor sau extragerea datelor, rulati cel putin:
./test_runner.sh timestamp-collision
./test_runner.sh verify-mode
./test_runner.sh dest-in-source
Pentru schimbari legate de GoPro sau metadata sidecar, rulati si:
./test_runner.sh gopro-sidecar-sync
./test_runner.sh gopro-no-sidecar-reimport
Daca aceste teste nu pot fi rulate, agentul trebuie sa marcheze integrarea ca nevalidata si sa nu recomande unattended move mode.
Pentru camere sau destinatii noi, prima rulare trebuie sa fie dry-run:
./media-importer.sh -s "/path/to/camera" -d "/path/to/destination" --dry-run -v
Verificati in output ca:
THM/LRV cand exista.Pentru date cu valoare mare sau cand sursa poate fi pastrata, preferati temporar:
./media-importer.sh -s "/path/to/camera" -d "/path/to/destination" --verify-mode strict --keep-originals -v
Daca un agent gaseste o copie a scriptului care:
mv direct in move mode;timestamp-collision;atunci agentul trebuie sa opreasca integrarea unattended si sa raporteze riscul ca posibil bug de pierdere de date.