Moving pages or page trees results in broken attachments
Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.
Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Summary
We've fixed this issue in Confluence 8.1 and later versions by introducing a more robust way of storing attachments that will prevent broken or missing attachments during page moves. Hierarchical File System Attachment Storage
After moving pages or page tree, attachment become broken on moved pages.
Diagnosis
The following errors can be seen in atlassian-confluence.log
1
2
3
4
5
6
7
8
9
10
11
12
13
ERROR [Long running task: Move Page] [atlassian.confluence.event.ConfluenceEventDispatcher] run There was an exception thrown trying to dispatch event [com.atlassian.confluence.event.events.content.page.PageMoveEvent@6271dc2f[theMover=ConfluenceUserImpl...{details of content being moved}
...
com.atlassian.confluence.event.events.content.page.PageMoveEvent), listener=com.atlassian.confluence.pages.persistence.dao.filesystem.UpdateAttachmentsOnFilesystemOnPageMoveListener@123456} (timed)]
-- referer: http://confluence:8090/display/SPACEKEY/PAGE_NAME | url: /pages/movepage.action | traceId: 1a2s3d4f5g6h | userName: username | action: movepage
java.lang.RuntimeException: Failed to move the attachment data. Listener: com.atlassian.confluence.pages.persistence.dao.filesystem.UpdateAttachmentsOnFilesystemOnPageMoveListener event: com.atlassian.confluence.event.events.content.page.PageMoveEvent
...
Caused by: com.atlassian.confluence.pages.persistence.dao.filesystem.UpdateAttachmentsOnFileSystemException: Failed to move the attachment data
...
Caused by: com.atlassian.confluence.pages.persistence.dao.filesystem.AttachmentDataFileSystemException: Could not move the attachment data along with the page for move of page [Page Title]
...
Caused by: java.io.IOException: Unable to delete file: c:/path/to/file
at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:2400)
at org.apache.commons.io.FileUtils.cleanDirectory(FileUtils.java:1721)
Cause
Windows has detailed permissions control and Delete Permission can be explicitly disabled.
If that happens, account used to run Confluence will fail to move the attachments stored in file system, as moving operation would require for the physical file to be removed from its old location.

Solution
Make sure Confluence service is running with a dedicated account and that account has Full Permissions to it's home directory as per Creating a Dedicated User Account on the Operating System to Run Confluence
As all attachments would still exist in Attachment folder within their appropriate content ID directories, you can use python script from How to resolve missing attachments in Confluence KB to manually move them under new location within file system hierarchy
Was this helpful?