Dropbox 只备份特定后缀的文件

2011-11-09 15:11:47 +08:00
 c
比如只备份 *.py , *.txt, *.log
5559 次点击
所在节点    问与答
14 条回复
CoX
2011-11-09 17:16:17 +08:00
好像没这样的设置吧
Evance
2011-11-09 17:21:28 +08:00
偶也木有看到。
feiandxs
2011-11-09 17:24:41 +08:00
py
txt
log
分别进不同的目录,然后只同步这些目录...

我就有目录这样共享,然后加了个反向代理,做成了电子书站……
pinepara
2011-11-09 17:44:27 +08:00
dreamersdw
2011-11-09 17:54:16 +08:00
自己写一个可以在 Dropbox 目录下创建与要备份的目录相同的层次结构,并在其中添加所有py, txt 文件的符号连接的脚本,然后把这个脚本添加到开机启动项中就OK。
c
2011-11-09 18:24:50 +08:00
@feiandxs 我有很多目录,每个目录是一个项目,每个项目有不同的日志,所以您的方法在我这里不适用。

@pinepara 已经投票

@dreamersdw 我要备份的目录里面每天都要添加新的项目,而且目前应该有1W+文件了。按照您的办法,实现起来有点难度。
c
2011-11-09 18:25:28 +08:00
如果能像hg或者git一样,添加一个.ignore,过滤不需要备份的文件就好了~
gavingeng
2011-11-10 00:49:55 +08:00
经常同步过去一些.class .pyc
同求,是否有.ignore来设置......
dreamersdw
2011-11-10 11:36:09 +08:00
用 Python 写了一个脚本,可以将需要同步的文件以符号符号链接的形式添加到 Dropbox 目录下

需要自己配置的部分如下
dropbox_dir="/home/yourname/Dropbox"
rules = [
("/home/yourname/workspace1", all_entry, all_entry),
("/home/yourname/workspace2", n(is_hidden), all_entry),
("/home/yourname/workspace3", n(vc_dir), has_exts(".txt", ".py")),
("/home/yourname/workspace4", n(vc_dir), a(has_exts(".log"), n(bigger_than("500M"))))
]

格式非常简单,每个工作目录可单独设置 rule,rule 由三部分组成(位置,目录过滤条件,文件过滤条件),这些过滤条件可以用 a(and), o(or), n(not) 三个逻辑运算符连接起来,构成复合逻辑。比如可以设置只同步所有非 .git 目录下以 .log 结尾且大小不超过 10M的文件。

性能不是问题,我试着同步了一下 Linux kernnel 中的全部的 C 源文件,只用了2秒多钟。

代码很 Quick and dirty,没有对异常做进一步处理,也没有考虑特殊情况。
完整代码见
http://snipt.org/ypkg9
CoX
2011-11-10 12:09:11 +08:00
@dreamersdw 这个很强大了
c
2011-11-10 13:14:23 +08:00
@dreamersdw 谢谢~
dreamersdw
2011-11-10 13:20:49 +08:00
/usr/bin/dropbox 第 1102 行有个 exclude 的函数,是用于排除用户不想同步的目录的,当然如果自己动手的话,也可以让它排除特定的类型文件。

幸亏 Dropbox 是用 Python ,而不是用 Java 写的。
freefcw
2011-11-10 13:31:28 +08:00
@dreamersdw 原来linux下面是用的python写的啊,那很好改了。。。
xingis
2013-07-22 15:52:27 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/21086

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX