V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
123go
V2EX  ›  程序员

OneDrive 文件同步问题

  •  
  •   123go · 2022-06-23 17:06:28 +08:00 · 2218 次点击
    这是一个创建于 887 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想做微信聊天记录和输入法配置的多端同步。但是有一些文件在程序未退出时总是处于被使用状态无法同步。但是这个文件又可以复制到别的地方。很奇怪 windows 的文件占用机制是怎样的?如果 onedrive 不能上传,那为什么可以复制呢? 被占用的文件无法上传

    24 条回复    2022-06-26 18:40:27 +08:00
    AoEiuV020CN
        1
    AoEiuV020CN  
       2022-06-23 17:10:47 +08:00
    感觉上,文件并没有上读锁,也就是 windows 是允许读取这个文件的,
    但是 oneDrive 比较自律,自己判断这个文件被占用,不管上没上锁,被占用就不上传,
    AoEiuV020CN
        2
    AoEiuV020CN  
       2022-06-23 17:12:15 +08:00
    我估计 oneDrive 上传过程会自己给文件上锁,上了锁其他进程就访问不了了,担心影响你的工作所以才反过来,有其他进程访问就不上锁,不上锁就不上传,
    123go
        3
    123go  
    OP
       2022-06-23 17:12:43 +08:00
    @AoEiuV020CN #1 如果有读锁的话,连复制也不可以了是吧~
    playtomandjerry
        4
    playtomandjerry  
       2022-06-23 17:14:40 +08:00
    onedrive 老问题都特么不修, 一个文件名有些符号的问题死活处理不了 服了
    Cheons
        5
    Cheons  
       2022-06-23 17:18:10 +08:00 via Android
    MS:备份是备份的价钱,同步那就是另外的价钱了。
    🤔
    123go
        6
    123go  
    OP
       2022-06-23 17:19:08 +08:00
    @AoEiuV020CN #2 那它上传为什么要加锁呢,检测到文件被使用,就停止好了唉~
    123go
        7
    123go  
    OP
       2022-06-23 17:20:39 +08:00
    @Cheons #5 我买了 microsoft 365 的订阅 应该不是钱的问题吧,有更贵的服务?
    leeg810312
        8
    leeg810312  
       2022-06-23 18:30:47 +08:00
    文件复制是产生一个新文件,也就是备份,是一个单向操作,可以不管当前文件的读写,当然是允许执行的。同步和备份是不同的,需要同步的 2 端数据完全相同,也就是双向的。Onedrive 发现网上的文件较新,那么就需要写到本地,这时本地是打开状态,怎么写入呢?
    arch9999
        9
    arch9999  
       2022-06-23 18:49:30 +08:00
    你整一个不能被复制的文件给我看看。
    123go
        10
    123go  
    OP
       2022-06-23 18:56:16 +08:00
    @arch9999 #9 sql server 的数据库文件就不能复制(服务启动、数据库未被分离)

    123go
        11
    123go  
    OP
       2022-06-23 18:57:57 +08:00
    @leeg810312 #8 同步我不可以理解为从设备 1 复制到服务器,再下载到设备 2 吗?
    lifansama
        12
    lifansama  
       2022-06-23 19:09:58 +08:00 via Android
    我现在用 GoodSync 把微信接收到的文件传到 OneDrive 里
    如果配置文件不大又恰好有一台常开的设备的话不如试试 syncting😂
    arch9999
        13
    arch9999  
       2022-06-23 19:38:47 +08:00
    @123go 看漏了,但是这个这个例子里的数据库文件即便不关闭服务也是有办法制的。
    123go
        14
    123go  
    OP
       2022-06-23 19:53:31 +08:00
    @lifansama #12 好的谢谢,我回头试一下
    123go
        15
    123go  
    OP
       2022-06-23 19:53:58 +08:00
    @arch9999 #13 怎么复制呢
    yyfearth
        16
    yyfearth  
       2022-06-24 02:49:54 +08:00
    @123go 同步一方面是 "从设备 1 复制到服务器,再下载到设备 2"
    但是也可以是 "从设备 2 复制到服务器,再下载到设备 1" 呀

    这样一来 就不是复制这么简单了啊 还包括写入呀
    ShareDuck
        17
    ShareDuck  
       2022-06-24 08:56:05 +08:00
    我觉得 OneDrive 不上传 “正在修改中” 的文件是很正常的逻辑吧。如果文件上传到一半,文件的前面部分修改了怎么办?
    123go
        18
    123go  
    OP
       2022-06-24 09:13:43 +08:00
    @yyfearth #16 是包括写入,如果两边都同时上传较新的文件,那就涉及到冲突情况解决机制了。但是我的问题是,“为什么不复制到远程服务器”
    123go
        19
    123go  
    OP
       2022-06-24 09:14:47 +08:00
    @ShareDuck #17 可是,我为什么可以本地复制“正在修改中”的文件呢
    yyfearth
        20
    yyfearth  
       2022-06-24 09:58:17 +08:00
    @123go 这个只能问 OneDrive 的开发了
    估计要么是他要锁这个文件(不管是什么锁) 但是文件已经有锁了 没办法再加锁 所以报错
    要么是他不区分上传还是下载 统统给读取和写入锁 因为没办法上写入锁 所以失败了
    yyfearth
        21
    yyfearth  
       2022-06-24 09:59:08 +08:00
    @123go 本地复制文件不需要上锁 所以只要不是读取锁 就没问题
    ShareDuck
        22
    ShareDuck  
       2022-06-24 11:05:23 +08:00
    @123go 不是很懂你的意思。“能复制” 跟 “不适合同步正在修改中的文件” 这两者有什么冲突吗?
    nothingistrue
        23
    nothingistrue  
       2022-06-24 12:04:37 +08:00
    文件占用不影响复制,那种不能复制的文件,要使用黑科技或骚套路才能搞出来的。
    123go
        24
    123go  
    OP
       2022-06-26 18:40:27 +08:00 via Android
    @ShareDuck 如果你认可同步就是复制到远程服务器,那么我认为是有冲突的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5514 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 08:38 · PVG 16:38 · LAX 00:38 · JFK 03:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.