syncrypto
可以用来将一个文件夹里面所有文件同步到另外一个加密的文件夹中,
一般来说,可以这样使用:
syncrypto syncrypto
文件夹A <---------------------> 加密文件夹B <-------------------> 文件夹C
机器X (可以放在不安全的地方,例如云存储 机器Y
加密文件夹B中的文件都是加密过的,所以可以把它放在不怎么安全的地方(例如云盘,公共硬盘等)
明文文件和加密文件是一一对应的关系,所以每次同步只会添加(删除/修改)那些需要的文件,这样 很适合那些基于文件系统的同步工具,例如云盘、rsync等。
同步过程是双向的,所以,文件不仅仅是从明文文件夹同步到加密文件夹,同样也会从加密文件夹同步到
明文文件夹,syncrypto
会根据算法选择最新的。
如果有冲突的话,syncrypto
会将明文文件重命名(加上单词conflict),然后将密文文件同步过来
syncrypto
是不会删除文件的,如果同步过程中需要删除或者覆盖文件,syncrypto
会将文件移动
到废纸篓里面。密文文件夹的废纸篓在_syncrypto/trash下,明文文件夹的废纸篓在
.syncrypto/trash下。密文文件夹废纸篓里面的文件一样是加密过的。
syncrypto
支持python2, python3,并且在下面的平台下测试通过:
支持Windows,Linux,OS X
如果是Windows的话,可以直接跳过
由于依赖cryptography,在Linux上需要先安装一些的依赖:
在Debian/Ubuntu系列中运行
sudo apt-get install build-essential libssl-dev libffi-dev python-dev
或者,在Fedora/RHEL系列中运行
sudo yum install gcc libffi-devel python-devel openssl-devel
如果是OS X系统,需要运行
xcode-select --install
安装完所有依赖后,即可通过pip
安装syncrypto
:
pip install syncrypto
syncrypto [加密文件夹] [明文文件夹] # 注意,加密文件夹放在前面
可以使用这个命令来同步,运行后会提示输入密码,第一次在该加密目录下运行的话是设置密码,之后
运行的话会进行密码匹配,如果不匹配则不能进行同步(放心,syncrypto
不会保存明文的密码)
如果不想通过命令行交互的方式输入密码,可以通过--password-file选项来通过文件给出密码:
syncrypto [加密文件夹] [明文文件夹] --password-file [密码文件]
密码文件里面保存的是明文密码
有时候,有些文件(例如一些临时文件)没有必要进行加密同步,这个时候你可以通过rule来排除 这些文件:
syncrypto [加密文件夹] [明文文件夹] --rule 'ignore: name match *.swp'
上面这条命令会在同步过程中忽略那些文件名匹配"*.swp"的文件
可以添加多条rule:
syncrypto [加密文件夹] [明文文件夹] --rule 'include: name eq README.md' --rule 'ignore: name match *.md'
上面这条命令会在同步过程中忽略那些文件名匹配"*.md"的文件,但是保留文件名为"README.md"的文件。
如果有多条rule的话,会按照顺序优先选择第一条匹配的rule
也可以通过文件,而不是命令行的方式配置rule,--rule-file选项可以做到:
syncrypto [加密文件夹] [明文文件夹] --rule-file [rule文件]
rule文件可以这样写:
include: name eq README.md
# ignore all markdown files, this is a comment
ignore: name match *.md
默认的--rule-file指向[明文文件夹]/.syncrypto/rules
如果同时给定了--rule, --rule-file选项,那会--rule指定的规则优先级更高。
rule的格式:
[action]: [file attribute] [operand] [value]
[action]
是指匹配规则后的动作,可以为'include', 'ignore', 'exclude'。
'include'表示包含,'ignore'表示忽略,'exclude'和ignore是同样的含义
[file attribute]
是指参与匹配的文件的属性,支持:
name
, 文件名,包括扩展名path
, 文件路径,从明文文件夹的根目录算起,例如 "a/b/c.txt"size
, 文件大小ctime
, 文件的change time(windows下指的是创建时间)mtime
, 文件的修改时间[operand]
:
eq
, ==
gt
, >
lt
, <
gte
, >=
lte
, <=
ne
, !=
, <>
match
, 通配符匹配regexp
, 正则表达式匹配[value]
就是参与比较或者匹配的值,如果operand是size的话,默认单位是字节,可以带单位,
例如K,M,G; 2K表示2048字节。
如果是ctime
, mtime
的话,时间的格式是:"%Y-%m-%d %H:%M:%S"
如果只想加密一个文件,可以使用:
syncrypto --encrypt-file [文件路径]
这条命令默认会将加密后的文件放在明文文件相同目录下,如果想放到别的地方,可以加上--out-file 参数:
syncrypto --encrypt-file [明文文件路径] --out-file [加密后文件路径]
如果想解密任何一个通过syncrypto
加密过的文件,可以使用:
syncrypto --decrypt-file [文件路径]
这条命令默认会将解密后的文件放在当前目录下,如果想放到别的地方,同样可以加上--out-file 参数:
syncrypto --decrypt-file [密文文件] --out-file [解密后文件]
修改一个已经加密同步过后的密文目录中的密码
syncrypto --change-password [密文目录]
这条命令首先会提示输入当前密码,之后会提示设置新密码,设置成功后会将密文目录下的所有文件 重新加密一遍。
syncrypto -h
Apache License, Version 2.0
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型