V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
c
V2EX  ›  问与答

Dropbox 只备份特定后缀的文件

  •  
  •   c · 2011-11-09 15:11:47 +08:00 · 5552 次点击
    这是一个创建于 4752 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如只备份 *.py , *.txt, *.log
    14 条回复    1970-01-01 08:00:00 +08:00
    CoX
        1
    CoX  
       2011-11-09 17:16:17 +08:00
    好像没这样的设置吧
    Evance
        2
    Evance  
       2011-11-09 17:21:28 +08:00
    偶也木有看到。
    feiandxs
        3
    feiandxs  
       2011-11-09 17:24:41 +08:00
    py
    txt
    log
    分别进不同的目录,然后只同步这些目录...

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

    @pinepara 已经投票

    @dreamersdw 我要备份的目录里面每天都要添加新的项目,而且目前应该有1W+文件了。按照您的办法,实现起来有点难度。
    c
        7
    c  
    OP
       2011-11-09 18:25:28 +08:00
    如果能像hg或者git一样,添加一个.ignore,过滤不需要备份的文件就好了~
    gavingeng
        8
    gavingeng  
       2011-11-10 00:49:55 +08:00
    经常同步过去一些.class .pyc
    同求,是否有.ignore来设置......
    dreamersdw
        9
    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
        10
    CoX  
       2011-11-10 12:09:11 +08:00
    @dreamersdw 这个很强大了
    c
        11
    c  
    OP
       2011-11-10 13:14:23 +08:00
    @dreamersdw 谢谢~
    dreamersdw
        12
    dreamersdw  
       2011-11-10 13:20:49 +08:00
    /usr/bin/dropbox 第 1102 行有个 exclude 的函数,是用于排除用户不想同步的目录的,当然如果自己动手的话,也可以让它排除特定的类型文件。

    幸亏 Dropbox 是用 Python ,而不是用 Java 写的。
    freefcw
        13
    freefcw  
       2011-11-10 13:31:28 +08:00
    @dreamersdw 原来linux下面是用的python写的啊,那很好改了。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5487 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:06 · PVG 15:06 · LAX 23:06 · JFK 02:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.