Moving an existing checkpoint to external storage

Hey all,

I have a first full backup checkpoint compressed, encrypted and packed. While it was in the packing step (which took a while), I added a SFTP external storage and configured the backup app to use it for checkpoints.
I was hoping the cronjob would take care of moving the file but something went wrong. A folder with the name of the checkpoint was created on the external storage, but it’s empty. EDIT: not completely empty in fact:

Looking at the logs this is what I see:

[files] Error: OC\User\NoUserException: Backends provided no user object at <<closure>>

 0. <<closure>>
    OC\Files\Node\Root->getUserFolder()
 1. /var/www/nextcloud/lib/private/Files/Node/LazyFolder.php line 74
    call_user_func_array()
 2. /var/www/nextcloud/lib/private/Files/Node/LazyRoot.php line 40
    OC\Files\Node\LazyFolder->__call()
 3. /var/www/nextcloud/apps/files_versions/lib/Listener/FileEventsListener.php line 357
    OC\Files\Node\LazyRoot->getUserFolder()
 4. /var/www/nextcloud/apps/files_versions/lib/Listener/FileEventsListener.php line 209
    OCA\Files_Versions\Listener\FileEventsListener->getPathForNode()
 5. /var/www/nextcloud/apps/files_versions/lib/Listener/FileEventsListener.php line 107
    OCA\Files_Versions\Listener\FileEventsListener->write_hook()
 6. /var/www/nextcloud/lib/private/EventDispatcher/ServiceEventListener.php line 86
    OCA\Files_Versions\Listener\FileEventsListener->handle()
 7. /var/www/nextcloud/3rdparty/symfony/event-dispatcher/EventDispatcher.php line 251
    OC\EventDispatcher\ServiceEventListener->__invoke()
 8. /var/www/nextcloud/3rdparty/symfony/event-dispatcher/EventDispatcher.php line 73
    Symfony\Component\EventDispatcher\EventDispatcher->callListeners()
 9. /var/www/nextcloud/lib/private/EventDispatcher/EventDispatcher.php line 94
    Symfony\Component\EventDispatcher\EventDispatcher->dispatch()
10. /var/www/nextcloud/lib/private/EventDispatcher/EventDispatcher.php line 106
    OC\EventDispatcher\EventDispatcher->dispatch()
11. /var/www/nextcloud/lib/private/Files/Node/HookConnector.php line 112
    OC\EventDispatcher\EventDispatcher->dispatchTyped()
12. /var/www/nextcloud/lib/private/legacy/OC_Hook.php line 105
    OC\Files\Node\HookConnector->write()
13. /var/www/nextcloud/lib/private/Files/View.php line 1252
    OC_Hook::emit()
14. /var/www/nextcloud/lib/private/Files/View.php line 1126
    OC\Files\View->runHooks()
15. /var/www/nextcloud/lib/private/Files/View.php line 670
    OC\Files\View->basicOperation()
16. /var/www/nextcloud/lib/private/Files/Node/File.php line 73
    OC\Files\View->file_put_contents()
17. /var/www/nextcloud/apps/backup/lib/Service/ExternalFolderService.php line 543
    OC\Files\Node\File->putContent()
18. /var/www/nextcloud/apps/backup/lib/Service/ExternalFolderService.php line 452
    OCA\Backup\Service\ExternalFolderService->updateMetadataFile("*** sensitive parameters replaced ***")
19. /var/www/nextcloud/apps/backup/lib/Service/ExternalFolderService.php line 385
    OCA\Backup\Service\ExternalFolderService->createPoint("*** sensitive parameters replaced ***")
20. /var/www/nextcloud/apps/backup/lib/Service/UploadService.php line 318
    OCA\Backup\Service\ExternalFolderService->confirmPoint()
21. /var/www/nextcloud/apps/backup/lib/Service/UploadService.php line 178
    OCA\Backup\Service\UploadService->uploadToExternalFolder()
22. /var/www/nextcloud/apps/backup/lib/Cron/Manage.php line 149
    OCA\Backup\Service\UploadService->uploadPoint()
23. /var/www/nextcloud/apps/backup/lib/Cron/Manage.php line 119
    OCA\Backup\Cron\Manage->manage()
24. /var/www/nextcloud/lib/private/BackgroundJob/Job.php line 54
    OCA\Backup\Cron\Manage->run()
25. /var/www/nextcloud/lib/private/BackgroundJob/TimedJob.php line 60
    OC\BackgroundJob\Job->execute()
26. /var/www/nextcloud/cron.php line 152
    OC\BackgroundJob\TimedJob->execute()

at 2023-09-12T03:50:03+00:00

[files] Error: OC\User\NoUserException: Backends provided no user object at <<closure>>

 0. <<closure>>
    OC\Files\Node\Root->getUserFolder()
 1. /var/www/nextcloud/lib/private/Files/Node/LazyFolder.php line 74
    call_user_func_array()
 2. /var/www/nextcloud/lib/private/Files/Node/LazyRoot.php line 40
    OC\Files\Node\LazyFolder->__call()
 3. /var/www/nextcloud/apps/files_versions/lib/Listener/FileEventsListener.php line 357
    OC\Files\Node\LazyRoot->getUserFolder()
 4. /var/www/nextcloud/apps/files_versions/lib/Listener/FileEventsListener.php line 209
    OCA\Files_Versions\Listener\FileEventsListener->getPathForNode()
 5. /var/www/nextcloud/apps/files_versions/lib/Listener/FileEventsListener.php line 107
    OCA\Files_Versions\Listener\FileEventsListener->write_hook()
 6. /var/www/nextcloud/lib/private/EventDispatcher/ServiceEventListener.php line 86
    OCA\Files_Versions\Listener\FileEventsListener->handle()
 7. /var/www/nextcloud/3rdparty/symfony/event-dispatcher/EventDispatcher.php line 251
    OC\EventDispatcher\ServiceEventListener->__invoke()
 8. /var/www/nextcloud/3rdparty/symfony/event-dispatcher/EventDispatcher.php line 73
    Symfony\Component\EventDispatcher\EventDispatcher->callListeners()
 9. /var/www/nextcloud/lib/private/EventDispatcher/EventDispatcher.php line 94
    Symfony\Component\EventDispatcher\EventDispatcher->dispatch()
10. /var/www/nextcloud/lib/private/EventDispatcher/EventDispatcher.php line 106
    OC\EventDispatcher\EventDispatcher->dispatch()
11. /var/www/nextcloud/lib/private/Files/Node/HookConnector.php line 112
    OC\EventDispatcher\EventDispatcher->dispatchTyped()
12. /var/www/nextcloud/lib/private/legacy/OC_Hook.php line 105
    OC\Files\Node\HookConnector->write()
13. /var/www/nextcloud/lib/private/Files/View.php line 1252
    OC_Hook::emit()
14. /var/www/nextcloud/lib/private/Files/View.php line 1126
    OC\Files\View->runHooks()
15. /var/www/nextcloud/lib/private/Files/View.php line 670
    OC\Files\View->basicOperation()
16. /var/www/nextcloud/lib/private/Files/Node/File.php line 73
    OC\Files\View->file_put_contents()
17. /var/www/nextcloud/apps/backup/lib/Service/ExternalFolderService.php line 543
    OC\Files\Node\File->putContent()
18. /var/www/nextcloud/apps/backup/lib/Service/ExternalFolderService.php line 452
    OCA\Backup\Service\ExternalFolderService->updateMetadataFile("*** sensitive parameters replaced ***")
19. /var/www/nextcloud/apps/backup/lib/Service/ExternalFolderService.php line 385
    OCA\Backup\Service\ExternalFolderService->createPoint("*** sensitive parameters replaced ***")
20. /var/www/nextcloud/apps/backup/lib/Service/UploadService.php line 318
    OCA\Backup\Service\ExternalFolderService->confirmPoint()
21. /var/www/nextcloud/apps/backup/lib/Service/UploadService.php line 178
    OCA\Backup\Service\UploadService->uploadToExternalFolder()
22. /var/www/nextcloud/apps/backup/lib/Cron/Manage.php line 149
    OCA\Backup\Service\UploadService->uploadPoint()
23. /var/www/nextcloud/apps/backup/lib/Cron/Manage.php line 119
    OCA\Backup\Cron\Manage->manage()
24. /var/www/nextcloud/lib/private/BackgroundJob/Job.php line 54
    OCA\Backup\Cron\Manage->run()
25. /var/www/nextcloud/lib/private/BackgroundJob/TimedJob.php line 60
    OC\BackgroundJob\Job->execute()
26. /var/www/nextcloud/cron.php line 152
    OC\BackgroundJob\TimedJob->execute()

at 2023-09-12T03:50:03+00:00

What’s wrong with my setup? My external storage is Hetzner storage box.

Thanks for your help.

I attempted to manually launch the upload:

occ backup:point:upload 20230911051503-full-XouUx7Feg6jQZHh                                 
- uploading 20230911051503-full-XouUx7Feg6jQZHh to external folders                                                       
 - checking external folder 7:backup                                                                                      
  > restoring point not found                                                                                             
  * Creating Restoring Point on external folder: An unhandled exception has been thrown:                                  
Error: Call to a member function getUid() on null in /var/www/nextcloud/apps/files_versions/lib/Listener/FileEventsListene
r.php:361                                                                                                                 
Stack trace:                                                                                                              
#0 /var/www/nextcloud/apps/files_versions/lib/Listener/FileEventsListener.php(209): OCA\Files_Versions\Listener\FileEvents
Listener->getPathForNode()                                                                                                
#1 /var/www/nextcloud/apps/files_versions/lib/Listener/FileEventsListener.php(107): OCA\Files_Versions\Listener\FileEvents
Listener->write_hook()                                                                                                    
#2 /var/www/nextcloud/lib/private/EventDispatcher/ServiceEventListener.php(86): OCA\Files_Versions\Listener\FileEventsList
ener->handle()                                                                                                            
#3 /var/www/nextcloud/3rdparty/symfony/event-dispatcher/EventDispatcher.php(251): OC\EventDispatcher\ServiceEventListener-
>__invoke()                                                                                                               
#4 /var/www/nextcloud/3rdparty/symfony/event-dispatcher/EventDispatcher.php(73): Symfony\Component\EventDispatcher\EventDi
spatcher->callListeners()                                                                                                 
#5 /var/www/nextcloud/lib/private/EventDispatcher/EventDispatcher.php(94): Symfony\Component\EventDispatcher\EventDispatch
er->dispatch()                                                                                                            
#6 /var/www/nextcloud/lib/private/EventDispatcher/EventDispatcher.php(106): OC\EventDispatcher\EventDispatcher->dispatch()
#7 /var/www/nextcloud/lib/private/Files/Node/HookConnector.php(112): OC\EventDispatcher\EventDispatcher->dispatchTyped()  
#8 /var/www/nextcloud/lib/private/legacy/OC_Hook.php(105): OC\Files\Node\HookConnector->write()                           
#9 /var/www/nextcloud/lib/private/Files/View.php(1252): OC_Hook::emit()                                                   
#10 /var/www/nextcloud/lib/private/Files/View.php(1126): OC\Files\View->runHooks()                                        
#11 /var/www/nextcloud/lib/private/Files/View.php(670): OC\Files\View->basicOperation()                                   
#12 /var/www/nextcloud/lib/private/Files/Node/File.php(73): OC\Files\View->file_put_contents()                            
#13 /var/www/nextcloud/apps/backup/lib/Service/ExternalFolderService.php(543): OC\Files\Node\File->putContent()           
#14 /var/www/nextcloud/apps/backup/lib/Service/ExternalFolderService.php(452): OCA\Backup\Service\ExternalFolderService->u
pdateMetadataFile()                                                                                                       
#15 /var/www/nextcloud/apps/backup/lib/Service/ExternalFolderService.php(385): OCA\Backup\Service\ExternalFolderService->c
reatePoint()                                                                                                              
#16 /var/www/nextcloud/apps/backup/lib/Service/UploadService.php(318): OCA\Backup\Service\ExternalFolderService->confirmPo
int()                                                                                                                     
#17 /var/www/nextcloud/apps/backup/lib/Service/UploadService.php(178): OCA\Backup\Service\UploadService->uploadToExternalF
older()                                                                                                                   
#18 /var/www/nextcloud/apps/backup/lib/Command/PointUpload.php(143): OCA\Backup\Service\UploadService->uploadPoint()      
#19 /var/www/nextcloud/3rdparty/symfony/console/Command/Command.php(298): OCA\Backup\Command\PointUpload->execute()       
#20 /var/www/nextcloud/core/Command/Base.php(177): Symfony\Component\Console\Command\Command->run()                       
#21 /var/www/nextcloud/3rdparty/symfony/console/Application.php(1040): OC\Core\Command\Base->run()                        
#22 /var/www/nextcloud/3rdparty/symfony/console/Application.php(301): Symfony\Component\Console\Application->doRunCommand(
)                                                                                                                         
#23 /var/www/nextcloud/3rdparty/symfony/console/Application.php(171): Symfony\Component\Console\Application->doRun()      
#24 /var/www/nextcloud/lib/private/Console/Application.php(211): Symfony\Component\Console\Application->run()             
#25 /var/www/nextcloud/console.php(100): OC\Console\Application->run()                                                    
#26 /var/www/nextcloud/occ(11): require_once('...')                                                                       
#27 {main}⏎                   

After that, I tried removing the remote folder with the empty restoring-point.data to see if it would help, but now the point is “locked”.

# occ backup:point:upload 20230911051503-full-XouUx7Feg6jQZHh

In MetadataService.php line 155:
                   
  point is locked  
                   

I don’t really know what to do at this point. :frowning: