fix: kopieer met shutil.copyfile (data-only) i.p.v. copy/copy2
copy doet na copyfile ook copymode (os.chmod); op exfat met mountuid=1000 zijn alle bestanden eigendom van uid 1000 en wordt chmod/utime voor de niet-eigenaar service-gebruiker geweigerd (EPERM op elke kopie, ook na de copy2-fix). copyfile schrijft alleen data; verificatie gebeurt op grootte en mode/opnametijd voegen op exfat niets toe.
This commit is contained in:
parent
dd46ad6d3c
commit
69d08ba8ba
3 changed files with 19 additions and 16 deletions
|
|
@ -153,12 +153,13 @@ def copy_file(src, dst, attempts=MAX_RETRIES, delay=RETRY_DELAY):
|
|||
last_error = None
|
||||
for attempt in range(1, attempts + 1):
|
||||
try:
|
||||
# copy (niet copy2): copy2 preserveert timestamps via os.utime, en exfat
|
||||
# mountuid=1000 + allow_utime=0022 weigeren dat voor niet-eigenaars —
|
||||
# daarmee faalde elke kopie toen de service als aiaiaiaiagent ging
|
||||
# draaien (EPERM). Op exfat is mode altijd 0777 en staat het
|
||||
# opnamemoment al in de bestandsnaam (YYYYMMDDHHMMSS).
|
||||
shutil.copy(src, dst)
|
||||
# copyfile (niet copy/copy2): die doen ook metadata-operaties op het
|
||||
# doel — chmod en utime. Op exfat met mountuid=1000 zijn álle bestanden
|
||||
# eigendom van uid 1000, en allow_utime=0022 + chmod-toestand weigeren
|
||||
# dat voor de niet-eigenaar service-gebruiker (EPERM op elke kopie).
|
||||
# copyfile schrijft alleen data; mode is op exfat altijd 0777 en het
|
||||
# opnamemoment staat al in de bestandsnaam (YYYYMMDDHHMMSS).
|
||||
shutil.copyfile(src, dst)
|
||||
return
|
||||
except OSError as e:
|
||||
last_error = e
|
||||
|
|
|
|||
Loading…
Reference in a new issue