mirror of
https://github.com/tiennm99/telegram-exporter.git
synced 2026-10-11 12:29:00 +00:00
rclone writes straight to the final remote name on any backend that does not advertise PartialUploads, and cleans up after a failed Put only when it did not. Pikpak advertises neither, so a transfer that died halfway left a fragment under exactly the name verification matches on — counted archived by that run and every run after it, with the local copy already deleted. A failed move now looks for that object and removes it, leaving a complete one alone since pikpak's async commit can still land it correctly. An unwritable filename ended the whole walk, so one hostile name could strand every message behind it. It is skipped and reported instead. The comment there had described that behaviour all along. Also: remove the part file when promoting it fails, since the caller hands the reservation back and the cap would stay over-committed; report upload failures alongside a download error rather than instead of it, which on Ctrl-C hid that finished files had been discarded. Run had no test of its own because it called Download directly. That step is now indirected, covering the properties only the composition has: uploads closed after the last send, the budget balanced across failures, and a tripped breaker halting downloads rather than walking the whole chat.