Hi all

I’m running several docker containers with local persistent volumes that I would like to backup. I haven’t found an easy method to do so.

What do you use / recommend to do that? AFAIK you can’t just rsync the volume directory while the container is running.

  • outcide@kbin.social
    link
    fedilink
    arrow-up
    6
    ·
    1 year ago

    Use bind mounts instead of docker volumes. Then you just have normal directories to back up, the same as you would anything else.

    In general, it’s not a problem to back up files while the container is running. The exception to this is databases. To have reliable database backups, you need to stop the container (or quiesce/pause the database if it supports it) before backing up the raw database files (including SQLite).

    • MaggiWuerze@feddit.de
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      This is your answer. It also has the benefit of allowing you to have a nice folder structure for your Docker setup, where you have a folder for each service holding the corresponding compose yaml and data folder(s)

  • Ruud@lemmy.worldM
    link
    fedilink
    arrow-up
    5
    ·
    1 year ago

    Rsync works fine for most data. (I use borgbackup) For any database data, create a dump using pg_dump or mysqldump or whatever. Then backup the dump and all other volumes but exclude the db volume.

  • Philip@endlesstalk.org
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    Besides using bind mounts(As @outcide@kbin.social) mentions, you can run a backup container, that mounts the volume, that you would like to create a backup for. The backup container would handle backing up the volume at regular interval.

    This is what I do in thedocker-compose and k3s containers I backup. I can recommend autorestic as the container for backup, but there is a lot of options.

  • Michael717@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    1 year ago

    In general there is no problem in rsync’ing the volume bind directory. But that depends on the application, which is running in the container. I. e. you should not copy the files of a running database. It may corrupt the data while it’s being written.