
Zotero是一款免费、易用的工具,可帮助您收集、组织、注释、引用和共享研究。对于保存、分类、翻译、笔记等文献可以大幅提高效率。下面是本人对于使用商业云盘对zotero进行同步的心得详解。

数据同步免费且无空间限制
zotero官方插件:https://www.zotero.org/support/plugins
zotfile插件:http://zotfile.com/ 含安装说明
如果进不去github,使用百度云盘下载: 链接: https://pan.baidu.com/s/1ULgK_CDUl_H6jx9YFA2f8g?pwd=9emi
安装插件方式顶部菜单栏(工具)→附加组件→设置符号→install add on from files→选择插件文件

附加组件→设置
同步盘功能:下面举例存在两台电脑,A和BA电脑同步盘:在本地删除或者修改或者创建文件,云盘会进行相同的操作B电脑同步盘:A、B两台电脑文件保持一致,如果同时打开后会发生冲突(存在同名文件)会报错,并产生冲突文件。如果非同时打开,则更新最新修改过的文件。注意:必须熟记同步盘的同步规则,否则可能产生文件丢失问题。
可先使用几个文件进行模拟操作,如A中创建,查看B是否有同步到。 A、B删除,A、B同时创建重名文件(未保存状态下),冲突是怎么样的。
目前常用的主要有百度网盘(kb)、onedrive、天翼云盘、坚果云(限量)等等,可以选择常用的网盘设置同步盘。
为方便区分,这里 “文献” 指的是数据库中的文件,“附件”指的是文献的pdf文件。
1. 地址1:编辑——首选项——高级——文件和文件夹——已链接附件的根目录——选择根目录(同步盘位置)

地址1
地址1含义:设置一个根目录,使所有电脑都能正常访问子目录中的附件
例:
A电脑中 E:\DesktopFiles\天翼云盘同步盘\文献附件 作为根目录,其子目录则是一个相对路径,如果子目录为:建筑结构学报\2022\韧性城市.pdf,则zotero会访问 根目录+子目录,即 E:\DesktopFiles\天翼云盘同步盘\文献附件\建筑结构学报\2022\韧性城市.pdf
B电脑中 G:\文件\天翼云盘同步盘\文献附件 作为根目录,其子目录则是一个相对路径,如果子目录为:建筑结构学报\2022\韧性城市.pdf,则zotero会访问 根目录+子目录,即 G:\文件\天翼云盘同步盘\文献附件 \建筑结构学报\2022\韧性城市.pdf
因为同步盘中的文件都是作为子目录,所以A、B两台电脑访问的都是同一个文件,于是便建立了连接
2. 地址2:编辑——首选项——高级——文件和文件夹——已链接附件的根目录——数据储存位置
注意:为避免冲突,不建议放在本地盘,因为不含附件,占用空间较小

地址2
地址2含义:储存文献的地址,可以默认也可以自定义
3. 地址3:工具——Zotfile Preferrnce——general settings——Source Folder for Attaching New Files

地址3
地址3含义:ZotFile可以将最近修改过的文件从某个文件夹 (如下载文件夹)中添加到当前选中的Zotero项目中作为新的附件,就是一个手动附加附件的文件地址,一般是在“下载”,或网上下载的储存文职。
4. 地址4:工具——Zotfile Preferrnce——general settings——Location of Files

地址4
地址4含义:ZotFile可以将新的和现有的附件移动到不同的位置。您可以在Zotero中存储附件文件的副本,这样您就可以将文件同步到Zotero服务器,也可以将文件移动到自定义文件夹并从Zotero链接到该位置。
设置:
custom location 设置和地址1相同,即云盘位置
勾选 Use subfolder defined by 含义如下:%c——按照zotero中的分类建立子文件夹%w——按照期刊分类%y——按照年份window中子文件夹结构采用 " \ ", ios 系统采用 " / " ,注意区分,其他分类参考http://zotfile.com/index.html#renaming-rules 中的 Wildcards
例:按照截图所示,则会产生如下附件文件夹
N:\天翼盘同步盘\文献附件\韧性\建筑结构学报\韧性城市.pdf
方式:工具——Zotfile Preferrnce——Renaming Rules
注意:两台电脑要设置一致,才能使用相同的文件

重命名方式设置
勾选方式一,使用zotero官方重命名
不勾选方式二,自定义命名,第一个是文献命名,第二个是专利命名,其他设置可以相同
方式:编辑——首选项——同步
设置:登录账号,勾选"自动同步",勾选"同步全文内容"

zotero官方同步设置
由于zotfile是以软链接的形式指向附件,删除文献时,并不能删除相应附件。
此处提供两种方式:
插件:https://github.com/redleafnew/delitemwithatt 使用看其说明,不再赘述进不去则百度网盘: https://pan.baidu.com/s/1rmRIY5Uq-JQYzJjQyJZ2Cg?pwd=hrkf
python程序,使用前请修改路径名称
import sqlite3
import os
# 设置 Zotero 数据库文件路径
zotero_db_path = "E:/文献/zotero.sqlite" # 根据你的实际路径进行修改
# 设置 ZotFile 文件夹路径
zotfile_folder_path = "E:/DesktopFiles/天翼云盘同步盘/文献/附件/" # 根据你的实际路径进行修改
# 连接到 Zotero 数据库
connection = sqlite3.connect(os.path.expanduser(zotero_db_path))
cursor = connection.cursor()
# 获取 Zotero 中的附件文件列表
cursor.execute("SELECT path FROM itemAttachments")
zotero_attachments = set(row[0] for row in cursor.fetchall())
# 遍历 ZotFile 文件夹中的文件和文件夹
countfile=0
countfolder=0
for root, dirs, files in os.walk(os.path.expanduser(zotfile_folder_path)):
for file in files:
file_path = os.path.join(root, file).replace("\\", "/")
# 计算相对于 ZotFile 文件夹的相对文件路径
relative_file_path ="attachments:" + os.path.relpath(file_path, start=zotfile_folder_path).replace("\\", "/")
# 检查文件是否存在于 Zotero 附件列表中
if relative_file_path not in zotero_attachments:
countfile=countfile+1
print(f"删除文件:{file_path} (相对路径:{relative_file_path})")
os.remove(file_path)
# 删除空的文件夹
for root, dirs, files in os.walk(os.path.expanduser(zotfile_folder_path), topdown=False):
for dir in dirs:
dir_path = os.path.join(root, dir)
if not os.listdir(dir_path):
countfolder=countfolder+1
print(f"删除文件夹:{dir_path}")
os.rmdir(dir_path)
# 关闭数据库连接
connection.close()
# 删除所有变量
del connection
del cursor
del zotero_attachments
print("共删除 %d 文件,删除 %d 文件夹" %(countfile,countfolder))
百度云盘链接:https://pan.baidu.com/s/14Z80rtOoVOkV-shOu9JdBw?pwd=ni9r