前面写过一篇 《Obsidian通过Dropbox同步实现文章自动发布》 但是没有具体写Linux下怎么使用maestral的介绍。之前在使用的时候,为了实现只同步制定目录下的文件,经历过惨痛的教训,把dropbox里上传的内容整个删除了好几次,好在有备份重新上传,这里记录下来,希望大家能避坑。
maestral的GitHub地址:https://github.com/samschott/maestral
Maestral: https://maestral.app/
安装maestral
mkdir maestral
cd maestral/
python3 -m venv venv
source venv/bin/activate
python3 -m pip install --upgrade maestral
授权maestral访问dropbox
maestral auth link
# 多账号可以加 -c 选项
# maestral auth link -c home
# 如果没有多账号的情况,最好是不加-c选项,要不然后面所有的命令都需要这个参数,太麻烦了
出现提示后,选择第二项,在控制台打印授权URL
- Linking new account for 'test' config
- Retrieving auth code from Dropbox
? How would you like to you link your account?
> Open Dropbox website
Print auth URL to console
将URL复制到浏览器,登录dropbox账号之后,将页面上生成的访问码粘贴到命令行,粘贴过程中出现打字效果,耐心等待即可
回车之后,提示如下信息表示授权成功了!
! No keyring found, credentials stored in plain text
✓ Credentials written
✓ Linked to xxx
maestral的默认配置文件在~/.config/maestral/maestral.ini
, 如果加了 -c
选项之后,配置文件的名称是选项的内容,如home.ini
设置本地同步目录
# /xxx修改为你的目录,需要自己创建
maestral config set path /xxx
如果需要将dropbox的某些目录排除不同步,可执行下面的命令。 记住不要尝试自己去手动修改配置文件,上面提到的坑,就是在这个地方,我尝试将排除的目录直接编辑到配置文件,然后停掉maestral服务,之后手动删掉那些同步过来的目录,然后在启动maestral服务,发现也将我dropbox的远程目录也删除了。
# 查看dropbox远程内容
maestral ls -l
# Photos是你排除的目录,不要带/,之前看配置文件有带/,设置参数也带/
# 所以没有配置就尝试手动修改配置,结果悲剧了
maestral excluded add Photos
maestral excluded add xxx
# 如果发现添加错误了,可以用以下命令删除
maestral excluded remove xxx
# 最后查看添加好的目录
maestral excluded list
如果确实发现内容已经同步下来,可以停止服务,然后将本地同步目录设置到新目录,再修改排除目录,再启动服务进行同步测试。千万别删内容!!!
设置好的配置文件是这样的:
[auth]
account_id =
keyring =
token_access_type = offline
[app]
notification_level = 15
log_level = 20
update_notification_interval = 604800
bandwidth_limit_up = 0.0
bandwidth_limit_down = 0.0
max_parallel_uploads = 6
max_parallel_downloads = 6
[sync]
path = /xxx
excluded_items = ['/public', '/photos', '/share', '/xxx']
max_cpu_percent = 20.0
keep_history = 604800
upload = True
download = True
[main]
version = 20.0
maestral服务管理
# 启动服务
maestral start
# 停止服务
maestral stop
# 查看当前正在同步的活动
maestral activity
# 查看历史同步记录
maestral history
可以创建系统服务
maestral autostart -Y
之后会在用户目录下生成两个文件,这个是用户级别的服务,只在用户登录时启动
Created symlink ~/.config/systemd/user/default.target.wants/[email protected] → ~/.local/share/systemd/user/[email protected]
所以可以将[email protected]
拷贝到系统服务目录
cp ~/.config/systemd/user/default.target.wants/[email protected] /lib/systemd/system/
systemctl enable maestral-daemon\@maestral.service
# 先停掉之前手动启动的服务
maestral stop
systemctl start maestral-daemon\@maestral.service
# 取消用户登录启动服务
maestral autostart -N
以服务形式启动maestral,仍然可以用activity
、 history
信息,后续愉快的使用吧。