seafile 备份

seafile 备份

  • 官方文档地址:用Docker部署Seafile - Seafile Cloud

  • 注意:官方文档最后一步恢复资料库数据多加了一个目录。

目的

  • 将 seafile 上的数据备份到本地的备份目录。

方法

安装 seafile

## 第一步:安装 docker-compose
yum install docker-compose -y

## 第二步:下载 docker-compose.yml 文件,并进行相关配置
# 文件链接
https://docs.seafile.com/d/cb1d3f97106847abbf31/files/?p=/docker/docker-compose.yml
vim docker-compose.yml  # 根据需要改动中文注释的部分。
-------------------------------------------
version: '2.0'
services:
  db:
    image: mariadb:10.5
    container_name: seafile-mysql
    environment:
      - MYSQL_ROOT_PASSWORD=db_dev  # mysql 的 root 密码 
      - MYSQL_LOG_CONSOLE=true
    volumes:
      - /opt/seafile-mysql/db:/var/lib/mysql  # Requested, specifies the path to MySQL data persistent store.
    networks:
      - seafile-net

  memcached:
    image: memcached:1.6
    container_name: seafile-memcached
    entrypoint: memcached -m 256
    networks:
      - seafile-net
          
  seafile:
    image: seafileltd/seafile-mc:latest
    container_name: seafile
    ports:
      - "80:80"
#      - "443:443"  # If https is enabled, cancel the comment.
    volumes:
      - /opt/seafile-data:/shared   # seafile 的数据存放目录。
    environment:
      - DB_HOST=db
      - DB_ROOT_PASSWD=db_dev  # MySQL 的 root 账号密码。
#      - TIME_ZONE=Asia/Shanghai # Optional, default is UTC. Should be uncomment and set to your local time zone.
      - SEAFILE_ADMIN_EMAIL=[email protected] # 默认的用户名
      - SEAFILE_ADMIN_PASSWORD=asecret     # 默认的密码
      - SEAFILE_SERVER_LETSENCRYPT=false   # Whether use letsencrypt to generate cert.
      - SEAFILE_SERVER_HOSTNAME=seafile.example.com # 本机的IP地址。
    depends_on:
      - db
      - memcached
    networks:
      - seafile-net

networks:
  seafile-net:
-----------------------------------------------------

## 第三步:安装 seafile
docker-compose up -d  # 注意:当前目录下必须要有 docker-compose.yml 文件

备份

  • 需要备份的数据库和目录就是 docker-compose.yml 文件中的挂载目录。即上文中/opt/seafile-data:/shared/opt/seafile/seafile目录。
## 备份数据库
mkdir -p /opt/seafile-backup/databases && cd /opt/seafile-backup/databases  # 创建数据库备份目录
docker exec -it seafile-mysql mysqldump  -uroot -p** --opt ccnet_db > ccnet_db.sql   # -p 后面跟MySQL数据库密码,注意没有空格。
docker exec -it seafile-mysql mysqldump  -uroot -p** --opt seafile_db > seafile_db.sql
docker exec -it seafile-mysql mysqldump  -uroot -p** --opt seahub_db > seahub_db.sql

## 备份 seafile 资料库的数据
mkdir -p cp -R /opt/seafile-backup/data/ && /opt/seafile-data/seafile /opt/seafile-backup/data/
cd /opt/seafile-backup/data && rm -rf ccnet
  • 如果通过下面的恢复数据操作无误,可以使用 contab 做一个定时备份。

    vim seafile-backup.sh
    --------------------------------
    ## 备份数据库
    mkdir -p /opt/seafile-backup/databases && cd /opt/seafile-backup/databases  # 创建数据库备份目录
    docker exec -it seafile-mysql mysqldump  -uroot -p** --opt ccnet_db > ccnet_db.sql   # -p 后面跟MySQL数据库密码,注意没有空格。
    docker exec -it seafile-mysql mysqldump  -uroot -p** --opt seafile_db > seafile_db.sql
    docker exec -it seafile-mysql mysqldump  -uroot -p** --opt seahub_db > seahub_db.sql
    ## 备份 seafile 资料库的数据
    mkdir -p  /opt/seafile-backup/data/ && cp -R /opt/seafile-data/seafile /opt/seafile-backup/data/
    cd /opt/seafile-backup/data/seafile && rm -rf ccnet
    --------------------------------
    corntab -e
    ------------------------------
    # seafile 定时备份
    0 23 * * * sh seafile-bakup.sh
    ------------------------------
    

恢复数据

## 将本地的 sql 传至 seafile-mysql
docker cp /opt/seafile-backup/databases/ccnet_db.sql seafile-mysql:/tmp/ccnet_db.sql
docker cp /opt/seafile-backup/databases/seafile_db.sql seafile-mysql:/tmp/seafile_db.sql
docker cp /opt/seafile-backup/databases/seahub_db.sql seafile-mysql:/tmp/seahub_db.sql

## 将 seafile-mysql 上的 sql 导入数据库
docker exec -it seafile-mysql /bin/sh -c "mysql -uroot -p** ccnet_db < /tmp/ccnet_db.sql"
docker exec -it seafile-mysql /bin/sh -c "mysql -uroot -p** seafile_db < /tmp/seafile_db.sql"
docker exec -it seafile-mysql /bin/sh -c "mysql -uroot -p** seahub_db < /tmp/seahub_db.sql"

## 恢复资料库数据
cp -R /opt/seafile-backup/data/* /opt/seafile-data/

你可能感兴趣的:(工作,mysql,docker,数据库)