# Backup fails if someone uploads during backup

**URL:** https://meta.discourse.org/t/backup-fails-if-someone-uploads-during-backup/64129
**Category:** Bug
**Created:** [June 7, 2017, 6:41pm UTC](https://meta.discourse.org/t/backup-fails-if-someone-uploads-during-backup/64129 "2017-06-07T18:41:27Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [June 7, 2017, 6:41pm UTC](https://meta.discourse.org/t/backup-fails-if-someone-uploads-during-backup/64129/1 "2017-06-07T18:41:27Z")

</div>

```plaintext
[2017-06-07 18:12:36] Creating archive: asdf-2017-06-07-181158-v20170524182846.tar.gz
[2017-06-07 18:12:36] Making sure archive does not already exist...
[2017-06-07 18:12:36] Creating empty archive...
[2017-06-07 18:12:36] Archiving data dump...
[2017-06-07 18:12:36] Archiving uploads...
[2017-06-07 18:13:18] EXCEPTION: Failed to archive uploads.
tar: uploads/default/original/2X/c/c5df928d1883cc5f15d1dac6d95c0c0ae55f073e.jpeg: file changed as we read it
tar: uploads/default/original/2X/c: file changed as we read it
tar: uploads/default/original/2X: file changed as we read it
tar: uploads/default/original: file changed as we read it
tar: uploads/default: file changed as we read it

```

A site called “stack overflow” [suggests](https://stackoverflow.com/questions/20318852/tar-file-changed-as-we-read-it)  
adding `--warning=no-file-changed` to the `tar` command.

Is it as simple as adding that switch here?

> <https://github.com/discourse/discourse/blob/main/lib/backup_restore/backuper.rb#L233>

---

<div class="post-metadata">

### Author: ![JagWaugh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagwaugh/32/69335_2.png) [@JagWaugh](https://meta.discourse.org/u/JagWaugh)
#### Post date: [June 7, 2017, 6:44pm UTC](https://meta.discourse.org/t/backup-fails-if-someone-uploads-during-backup/64129/2 "2017-06-07T18:44:56Z")

</div>

How can a user upload a file while the site is RO during the backup?

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [June 7, 2017, 6:45pm UTC](https://meta.discourse.org/t/backup-fails-if-someone-uploads-during-backup/64129/3 "2017-06-07T18:45:25Z")

</div>

I just know that it happened. 🙂

---

<div class="post-metadata">

### Author: ![fefrei](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fefrei/32/119538_2.png) [@fefrei](https://meta.discourse.org/u/fefrei)
#### Post date: [June 7, 2017, 6:47pm UTC](https://meta.discourse.org/t/backup-fails-if-someone-uploads-during-backup/64129/4 "2017-06-07T18:47:06Z")

</div>

I _think_ read only mode only kicks in while the database is being dumped and is disabled _before_ the backup is compressed (which captures the uploads).

---

<div class="post-metadata">

### Author: ![JagWaugh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jagwaugh/32/69335_2.png) [@JagWaugh](https://meta.discourse.org/u/JagWaugh)
#### Post date: [June 7, 2017, 6:47pm UTC](https://meta.discourse.org/t/backup-fails-if-someone-uploads-during-backup/64129/5 "2017-06-07T18:47:43Z")

</div>

I can’t do squat from the web interface while our backup is running. If it were a sidekiq job doing something then surely _someone_ would have seen it by now.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [June 7, 2017, 6:49pm UTC](https://meta.discourse.org/t/backup-fails-if-someone-uploads-during-backup/64129/6 "2017-06-07T18:49:37Z")

</div>

That’s right. Read-only is only on [while the database is backing up](https://github.com/discourse/discourse/blob/master/lib/backup_restore/backuper.rb#L29-L39). Creating the tar file could take a long while.

It’s fairly improbable that an upload would happen in this window, but this site got 2.6M page views in the past 30 days, with 6.9K posts yesterday.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [June 7, 2017, 8:35pm UTC](https://meta.discourse.org/t/backup-fails-if-someone-uploads-during-backup/64129/7 "2017-06-07T20:35:07Z")

</div>

> [@pfaffman](#):
>
> Is it as simple as adding that switch here?

It looks like it to me.

[https://github.com/discourse/discourse/pull/4907](https://github.com/discourse/discourse/pull/4907)

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [June 7, 2017, 11:28pm UTC](https://meta.discourse.org/t/backup-fails-if-someone-uploads-during-backup/64129/8 "2017-06-07T23:28:31Z")

</div>

If this looks good to you @mpalmer and @tgxworld please merge

---

<div class="post-metadata">

### Author: ![zogstrip](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/zogstrip/32/512781_2.png) [@zogstrip](https://meta.discourse.org/u/zogstrip)
#### Post date: [June 8, 2017, 10:23am UTC](https://meta.discourse.org/t/backup-fails-if-someone-uploads-during-backup/64129/9 "2017-06-08T10:23:07Z")

</div>


