Seafile云客户端安装使用说明

更新时间:2023-03-08 08:34:07 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Seafile公司云介绍

一. 什么是Seafiles云数据

举个栗子:

1. 我们现在的数据共享模式

效率低,占用网络资源,数据不能保障是最新修改的。

2. 数据备份?无序,不安全!

3. 查找历史文件?台台电脑分别找,要不找网管?网管有备份还好,没备份就没了!

没了!没了!重要的事讲三遍。

Seafiles

二. Seafiles工作优势 三. Seafiles操作使用说明

一.下载Seafile客户端,按下面的步骤安装使用: 1. 指定Seafile数据磁盘

2. 添加帐号

在Seafile服务器添加一个帐号:

3. 和服务器同步数据

点击“同步该资料库”按钮将该资料库与本地文件夹同步。 ? 往该资料库中添加文件。它们将会被自动同步到云平台。

?

4. 用非同步方式查看云端文件

在一些场合下,你希望在不同步文件的情况下直接编辑服务器上文件。Seafile客户端为此提供了“云端文件浏览器”。双击尚未同步到本地的资料库,即可打开云端文件浏览器,对云端的文件进行操作。

二.删除一个资料库

为了最大的保证你的数据安全性,服务器和客户端的删除是分开的:

在服务器端删除一个资料库后,客户端上的目录不会被删除(只是解除同步)。 ? 客户端上删除一个资料库后,对服务器端没有影响。

?

三.多人共同修改文件时的冲突处理

你可以在不同的计算机上对已经同步的文件夹进行任意的添加、删除、修改文件操作,所有的修改都会被自动同步到各个计算机上。

如果刚好有两个人同时修改了一个文件的内容,两个人的版本都会保留在文件夹中,其中一个人的版本的文件名会以该用户的名字加上当前时间作为后缀,比如 test.txt

(name@example.com 2011-11-11-11-11-11)。然后你可以对比这两个文件,并对文件做相应的修改。

FUSE扩展

在Seafile系统上文件被分割成数据块,这意味着在你的Seafile服务器上存储的并不是完整的文件而是数据块。这种设计能够方便有效的运用数据去重技术。 +

然而,有时系统管理员想要直接访问服务器上的文件,你可以使用seaf-fuse来做到这点。 +

Seaf-fuse是一种FUSE虚拟文件系统的实现. 一句话来说就是,它挂载所有的Seafile文件到一个目录(它被称为'''挂载点'''),所以你可以像访问服务器上的正常目录一样来访问由Seafile服务器管理的所有文件。 + 注意:

加密的目录不可以被seaf-fuse来访问。

? Seaf-fuse的当前实现是只读访问,这意味着你不能通过挂载的目录来修改文件。 ? 对于debian/centos系统,你需要在“fuse”组才有权限来挂载一个FUSE目录。

?

如何启动seaf-fuse

假设你想挂载到/data/seafile-fuse. +

创建一个目录作为挂载点

mkdir -p /data/seafile-fuse

用脚本来启动seaf-fuse

注意:在启动seaf-fuse之前, 你应该已经通过执行./seafile.sh start启动好Seafile服务器。 +

./seaf-fuse.sh start /data/seafile-fuse

停止seaf-fuse

./seaf-fuse.sh stop

挂载目录的内容

顶层目录

现在你可以列出/data/seafile-fuse目录的内容

+

$ ls -lhp /data/seafile-fuse

drwxr-xr-x 2 root root 4.0K Jan 1 1970 abc@abc.com/ drwxr-xr-x 2 root root 4.0K Jan 1 1970 foo@foo.com/ drwxr-xr-x 2 root root 4.0K Jan 1 1970 plus@plus.com/ drwxr-xr-x 2 root root 4.0K Jan 1 1970 sharp@sharp.com/ drwxr-xr-x 2 root root 4.0K Jan 1 1970 test@test.com/

顶层目录包含许多子目录,每个子目录对应一个用户 ? 文件和目录的时间戳不会被保存

?

每个用户的目录

$ ls -lhp /data/seafile-fuse/abc@abc.com

drwxr-xr-x 2 root root 924 Jan 1 1970

5403ac56-5552-4e31-a4f1-1de4eb889a5f_Photos/ drwxr-xr-x 2 root root 1.6K Jan 1 1970 a09ab9fc-7bd0-49f1-929d-6abeb8491397_My Notes/

从上面的列表可以看出,在用户目录下有一些子目录,每个子目录代表此用户的一个资料库,并且以'''{库id}-{库名字}'''的格式来命名。 +

资料库的目录

$ ls -lhp

/data/seafile-fuse/abc@abc.com/5403ac56-5552-4e31-a4f1-1de4eb889a5f_Photos/

-rw-r--r-- 1 root root 501K Jan 1 1970 image.png -rw-r--r-- 1 root root 501K Jan 1 1970 sample.jpng

如果出现\的错误

如果你运行./seaf-fuse.sh start时,遇到\的错误信息, 很有可能你没有在“fuse用户组”解决方法: +

?

把你的用户加到fuse组 +

sudousermod -a -G fuse

? 退出shell重新登陆 +

? 现在试着再一次执行./seaf-fuse.sh start

概述

一般来说,Seafile备份分为两部分内容: +

Seafile资料库数据 ? 数据库

?

如果你根据我们的手册来安装Seafile服务器,你应该有如下目录结构:

+

haiwen # 根目录,haiwen为示例文件名,如果你安装到其他目录则为相应的目录名 --seafile-server-2.x.x # Seafile安装包解压缩后目录

--seafile-data # Seafile配置文件和数据(如果你选择默认方式) --seahub-data # Seahub数据

--ccnet # Ccnet配置文件和数据

--seahub.db # Seahub用到的 sqlite3 数据库文件 --seahub_settings.py # seahub可选属性配置文件 你所有的资料库数据都存储在haiwen目录。 +

Seafile也在数据库中存储一些重要的元数据。数据库的命名和存储路径取决于你所使用的数据库。 +

对于 SQLite, 数据库文件也存储在haiwen目录。相应的数据文件如下: +

ccnet/PeerMgr/usermgr.db: 包含用户信息 ? ccnet/GroupMgr/groupmgr.db: 包含群组信息 ? seafile-data/seafile.db: 包含资料库元数据信息

? seahub.db: 包含网站前端(Seahub)所用到的数据库表信息

?

对于 MySQL, 数据库由管理员来创建,所以不同的人部署,可能会有不同的文件名。大体而言,有如下三个数据库会被创建: +

ccnet-db: 包含用户和群组信息 ? seafile-db: 包含资料库元数据信息

? seahub.db: 包含网站前端(seahub)所用到的数据库表信息

?

备份步骤

备份需要如下三步: +

1. 可选步: 如果你选择 SQLite 作为数据库,首先停掉Seafile服务器; 2. 备份数据库;

3. 备份存放Seafile数据的目录;

我们假设你的Seafile数据位于/data/haiwen目录下,并且你想将其备份到/backup目录(/backup目录可以是 NFS(网络文件系统),可以是另一台机器的 Windows 共享,或者是外部磁盘)。请在/backup目录下创建如下目录结构: +

/backup

---- databases/ 包含数据库备份 ---- data/ 包含Seafile数据备份

备份数据库

我们建议你每次将数据库备份到另一个单独文件,并且不要覆盖最近一周来备份过的旧数据库文件。 + MySQL +

假设你的数据库名分别为ccnet-db, seafile-db和seahub-db。mysqldump会自动锁住表,所以在你备份MySql数据库的时候,不需要停掉Seafile服务器。通常因为数据库表非常小,所以执行以下命令备份不会花太长时间。

+

mysqldump -h [mysqlhost] -u[username] -p[password] --opt ccnet-db> /backup/databases/ccnet-db.sql.`date +\

mysqldump -h [mysqlhost] -u[username] -p[password] --opt seafile-db> /backup/databases/seafile-db.sql.`date +\

mysqldump -h [mysqlhost] -u[username] -p[password] --opt seahub-db> /backup/databases/seahub-db.sql.`date +\SQLite +

对于 SQLite 数据库,在备份前你需要停掉Seafile服务器。

+

sqlite3 /data/haiwen/ccnet/GroupMgr/groupmgr.db .dump >

/backup/databases/groupmgr.db.bak.`date +\

sqlite3 /data/haiwen/ccnet/PeerMgr/usermgr.db .dump >

/backup/databases/usermgr.db.bak.`date +\

sqlite3 /data/haiwen/seafile-data/seafile.db .dump >

/backup/databases/seafile.db.bak.`date +\

sqlite3 /data/haiwen/seahub.db .dump > /backup/databases/seahub.db.bak.`date +\

备份Seafile资料库数据

由于所有的数据文件都存储在/data/haiwen目录, 备份整个目录即可。你可以直接拷贝整个目录到备份目录,或者你也可以用rsync做增量备份。 +

直接拷贝整个数据目录,

+

cp -R /data/haiwen /backup/data/haiwen-`date +\这样每次都会产生一个新的备份文件夹,完成后,可以删掉旧的备份。 +

如果你有很多数据,拷贝整个数据目录会花很多时间,这时你可以用rsync做增量备份。 +

rsync -az /data/haiwen /backup/data 这个命令数据备份到/backup/data/haiwen下。 +

让拷贝和rsync过程成功结束是非常重要的,否则你最近的一些数据将会丢失。

+

恢复备份

如果你当前的Seafile服务器已经坏掉,将使用另一台机器来提供服务,需要恢复数据: +

1. 假设在新机器中,Seafile也被部署在了/data/haiwen目录中,拷贝/backup/data/haiwen

到新机器中即可。 2. 恢复数据库。

恢复数据库

现在你已经拥有了数据库备份文件,你可以按如下步骤来进行恢复。 + MySQL

+

mysql -u[username] -p[password] ccnet-db< ccnet-db.sql.2013-10-19-16-00-05 mysql -u[username] -p[password] seafile-db< seafile-db.sql.2013-10-19-16-00-20 mysql -u[username] -p[password] seahub-db< seahub-db.sql.2013-10-19-16-01-05 SQLite

+

cd /data/haiwen

mvccnet/PeerMgr/usermgr.dbccnet/PeerMgr/usermgr.db.old

mvccnet/GroupMgr/groupmgr.dbccnet/GroupMgr/groupmgr.db.old mvseafile-data/seafile.dbseafile-data/seafile.db.old mvseahub.dbseahub.db.old

sqlite3 ccnet/PeerMgr/usermgr.db

Seafile FSCK

在服务器端,Seafile通过一种内部格式将文件存储在资料库中。Seafile对于文件和目录有其独有的保存方式(类似于Git)。 +

默认安装下,这些内部对象,会被直接存储在服务器的文件系统中(例如 Ext4,NTFS)。由于大多数文件系统,不能在服务器非正常关闭或系统崩溃后,保证文件内容的完整性。所以,如果当系统崩溃时,正在有新的内部对象被写入,那么当系统重启时,这些文件就会被损坏,相应的资料库也无法使用。 +

注意: 如果你把seafile-data 目录存储在有后备电源的 NAS(例如 EMC 或NetApp)系统中,或者使用 S3 作为专业版的服务器,内部对象不会被损坏。 +

Seafile服务器包含了seafile-fsck工具来帮助你恢复这些毁坏的对象(类似于git-fsck工具)。这个工具将会进行如下两项工作: +

1. 检查Seafile内部对象的完整性,并且删除毁坏的对象。 2. 恢复所有受影响的资料库到最近一致,可用的状态。 执行流程如下所示:

+

cdseafile-server-latest

./seaf-fsck.sh [--repair|-r] [--enable-sync|-e] [repo_id_1 [repo_id_2 ...]] seaf-fsck有检查资料库完整性和修复损坏资料库两种运行模式。 +

检查资料库完整性

执行 seaf-fsck.sh 不加任何参数将以只读方式检查所有资料库的完整性。 +

cdseafile-server-latest ./seaf-fsck.sh

如果你想检查指定资料库的完整性,只需将要检查的资料库 ID 作为参数即可: +

cdseafile-server-latest

./seaf-fsck.sh [library-id1] [library-id2] ... 运行输出如下:

+

[02/13/15 16:21:07] fsck.c(470): Running fsck for repo ca1a860d-e1c1-4a52-8123-0bf9def8697f.

[02/13/15 16:21:07] fsck.c(413): Checking file system integrity of repo fsck(ca1a860d)... [02/13/15 16:21:07] fsck.c(35): Dir 9c09d937397b51e1283d68ee7590cd9ce01fe4c9 is missing.

[02/13/15 16:21:07] fsck.c(200): Dir /bf/pk/(9c09d937) is curropted. [02/13/15 16:21:07] fsck.c(105): Block 36e3dd8757edeb97758b3b4d8530a4a8a045d3cb is corrupted.

[02/13/15 16:21:07] fsck.c(178): File /bf/02.1.md(ef37e350) is curropted.

[02/13/15 16:21:07] fsck.c(85): Block 650fb22495b0b199cff0f1e1ebf036e548fcb95a is missing.

[02/13/15 16:21:07] fsck.c(178): File /01.2.md(4a73621f) is curropted. [02/13/15 16:21:07] fsck.c(514): Fsck finished for repo ca1a860d. 被损坏的文件和目录将显示在输出的结果中。 +

有时,你会看到如下的输出结果:

+

[02/13/15 16:36:11] Commit 6259251e2b0dd9a8e99925ae6199cbf4c134ec10 is missing [02/13/15 16:36:11] fsck.c(476): Repo ca1a860d HEAD commit is corrupted, need to restore to an old version.

[02/13/15 16:36:11] fsck.c(314): Scanning available commits...

[02/13/15 16:36:11] fsck.c(376): Find available commit 1b26b13c(created at 2015-02-13 16:10:21) for repo ca1a860d.

这意味着记录在数据库中的 \(当前资料库状态的标识)与数据目录中的记录不一致。这种情况下,fsck会试着找出最近可用的一致状态,并检查其完整性。 +

建议: 如果你有很多资料库要检查,保存fsck的输出到日志文件中将有助于后面的进一步分析。 +

修复损坏的资料库

fsck修复损坏的资料库有如下两步流程: +

1. 如果记录在数据库中的资料库当前状态无法在数据目录中找出,fsck将会在数据目录中找到最近可

用状态。

2. 检查第一步中可用状态的完整性。如果文件或目录损坏,fsck将会将其置空并报告损坏的路径,用

户便可根据损坏的路径来进行恢复操作。 执行如下命令来修复所有资料库:

+

cdseafile-server-latest ./seaf-fsck.sh --repair

大多数情况下我们建议你首先以只读方式检查资料库的完整性,找出损坏的资料库后,执行如下命令来修复指定的资料库:

+

cdseafile-server-latest

./seaf-fsck.sh --repair [library-id1] [library-id2] ...

由于被损坏的文件或目录在修复过后会被置空,在客户端同步被修复的损坏资料库将会导致数据丢失,即客户端先前好的完整的文件或目录拷贝将被空文件或空目录替代。为了避免这种情况发生,服务器将会阻止客户端同步被修复的损坏资料库。系统管理员应该通知用户来恢复损坏的文件或目录,然后执行如下命令让此资料库可以再次同步:

+

cdseafile-server-latest

./seaf-fsck.sh --enable-sync [library-id1] [library-id2] ...

开源版5.0.3和企业版5.0.2中的改动

从开源版5.0.3和企业版5.0.2开始,我们对seaf-fsck命令作了两项改进: +

管理员执行 --repair 之后,不需要再执行 --enable-sync 命令。seaf-fsck会自动将改资料库的所有同步客户端解除同步。用户需要重新同步该资料库。

? seaf-fsck会在资料库的历史中添加一个损坏文件和目录的列表,便于用户找到损坏的路径

?

存储容量与文件上传/下载大小限制

Note: Seafile服务器 5.0.0 之后,所有配置文件都移动到了统一的conf目录下。了解详情. +

存储容量

可以通过在seafile.conf文件中增加以下语句,来为所有用户设置默认存储容量(比如,2GB)。 +

[quota]

# 用户存储容量,单位默认为 GB,要求为整数。 default = 2

在社区版5.0.5以后,你可以以 KB, MB, GB, TB 为单位来设置默认容量。比如 +

[quota]

default = 200MB

注意这里 1TB = 1000GB = 1000*1000MB 以此类推。 +

此设置对所有用户有效,如果想为某一用户单独设置,请在管理员界面更改。 +

文件修改历史保存期限 (seafile.conf)

如果你不想保存所有的文件修改历史,可以在seafile.conf中设置: +

[history]

# 文件修改历史保存期限(单位为“天”) keep_days = 10

文件上传/下载大小限制

在seafile.conf中: +

[fileserver]

# 设置最大上传文件为 200M. max_upload_size=200

# 设置最大下载文件/目录为 200M. max_download_dir_size=200

Seahub配置

Note: Seafile服务器 5.0.0 之后,所有配置文件都移动到了统一的conf目录下。了解详情. +

Seahub下发送邮件提醒

请参看发送邮件提醒 +

缓存

Seahub在默认文件系统(/tmp/seahub_cache/)中缓存文件(avatars, profiles, etc) . 你可以通过Memcached进行缓存操作 (前提是你已经安装了python-memcache模块).

+

CACHES = {

'default': {

'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', } }

用户管理选项

The following options affect user registration, password and session. +

# 是非开启用户注册功能. 默认为 `False`. ENABLE_SIGNUP = False

# 用户注册后是否立刻激活,默认为 `True`. # 如设置为 `False`, 需管理员手动激活. ACTIVATE_AFTER_REGISTRATION = False

# 管理员新增用户后是否给用户发送邮件. 默认为 `True`. SEND_EMAIL_ON_ADDING_SYSTEM_MEMBER = True

# 管理员重置用户密码后是否给用户发送邮件. 默认为 `True`. SEND_EMAIL_ON_RESETTING_USER_PASSWD = True

本文来源:https://www.bwwdw.com/article/cnv3.html

Top