我已经阅读了大量有关此的信息,但我仍然不确定这是否可行。
我想要实现的是:同步 Dropbox 之外的文件夹,并对该文件夹或其中的文件进行的任何更改都会镜像到 Dropbox 文件夹和 Dropbox 服务器。
这是我尝试过的:我安装了 Link Shell Extension。选择一个里面有 10 张图片的文件夹,并在 Dropbox 文件夹内为其创建了一个连接点。当我从原始文件夹(Dropbox 外部)中删除图片时,更改会反映在 Dropbox 文件夹内的连接点文件夹中,而不是服务器上。
与符号链接选项的行为完全相同。
如果我手动从 Dropbox 系统托盘图标选择暂停同步然后恢复同步=它会将更改上传到服务器。
我知道我可以将所有文件移动到 Dropbox 文件夹内并在其原始位置创建连接/符号链接,但我想以相反的方式进行操作。
另外,对于文件夹而言,选择连接点和符号链接选项有什么区别?
谢谢。
答案1
根据 DropBox(https://www.dropbox.com/help/145/en)
连接点和别名
Dropbox 将遵循 Windows 连接点(Windows Vista 或更高版本)并同步它们链接到的文件或文件夹。但是,在重新启动 Dropbox 桌面应用程序之前,Windows 操作系统对这些文件或文件夹所做的任何更改都不会再次同步。要解决此问题,请将原始文件夹移动到您的 Dropbox,并从其先前位置添加连接点以链接到 Dropbox 文件夹中的新位置。
答案2
符号链接和连接实际上对此不起作用。但您可以使用其他方法来实现您想要的效果。
我的应用程序 Boxifier (http://www.boxifier.com) 可以同步 Dropbox 文件夹之外的文件夹,而无需将其移动或复制到本地 Dropbox 文件夹。您无需创建任何符号链接或连接点。
只需右键单击文件夹即可同步它。
您的照片将开始同步,您对该文件夹所做的任何更改都将镜像到 Dropbox。
答案3
不幸的是,至少在 Dropbox 开发团队做出改变之前,符号链接将不再同步。
我刚刚与 Dropbox 支持人员聊了聊关于连接点不同步的问题(Dropbox Windows 版本:89.4.278),他们的回答是:
我们在新版本的 Dropbox 桌面应用程序中实施了修复,这意味着符号链接现在作为单独的符号链接文件同步,并且如果符号链接引用的文件位于 Dropbox 文件夹之外,我们不再同步它们。
正如 OP 所提到的,在桌面应用程序中手动选择“暂停同步”然后“恢复同步”可以将更改上传到服务器。现在,随着应用程序中的更改,这不再同步。网络上的现有文件没有被删除,但更改不再同步。
在我看来,这是 Dropbox 团队做出的一个错误决定。
答案4
对于更高级但更好的解决方案,您可以将rsync
动力 cygwin 安装与调用 cygwin shell 脚本的 init 批处理脚本相结合,该脚本会在编写脚本时触发与受信任的第三方云存储文件夹的同步,其中的内容位于受监视的文件夹中。
(1.)安装 cygwin点击此链接。请注意在要选择的软件包列表中选择 rsync。如果您错过了,您可以随时安全地重新运行此安装程序。无论将来何时需要另一个软件包。
(2.)在 cygwin 中移动并对环境有了基本的了解之后,可以随时编辑 sync.sh(您稍后可以将其移动到更好的位置)。
sync.sh内容:
#!/usr/bin/env bash
# The synchronized folders.
WATCHED_FOLDER=/cygdrive/DRIVE_LETTER/PATH/TO/WATCHED/FOLDER
SYNCED_FOLDER=/cygdrive/DRIVE_LETTER/PATH/TO/SYNCED/FOLDER
# Will run forever!
until false
do
# Do a single remote synchronization
rsync -avn --delete WATCHED_FOLDER SYNCED_FOLDER
# Wait five minutes before resyncing.
sleep 300
done
(3)通过手动调用sync.sh
cygwin 进行一些测试。观察结果。更改一些文件夹和文件并重新运行。再次观察。重复。
(4.)对结果满意后,转到-avn
停用-av
空运行风险自负。从此时起,变更将有效运行不支持 Microsoft thrashbin。
(5.)转到开始->程序->开始->[鼠标右键单击]->打开->新建->文件。
(6.)将文件命名为 sync.bat 或类似名称。
(7.)编辑 sync.bat 和 Cygwin 的~/.bashrc
:
sync.bat内容:
rem call the synchronization neverending script.
DRIVE_LETTER:\PATH\TO\CYGWIN\Cygwin.bat
~/.bashrc 内容(这是一件很难的事情,因为您需要使用vi
Cygwin 来编辑它,但是您很可能可以通过从 Microsoft 编辑文件 DRIVE_LETTER:\PATH\TO\CYGWIN\home\YOUR_USER_NAME.bashrc 来解决这个问题:
[...]
/cygdrive/DRIVE_LETTER/PATH/TO/sync.sh
[...]
那是一行调用无限同步循环的代码。这不是真正做这种事情的方法,但目前应该没问题。
(8.)重启
(9.)使用taskmgr.exe
或 Microsoft 任务管理器检查是否有正在bash.exe
运行。如果您尚未启动 cygwin,则该进程应该正在执行同步。
(10.)作为可选的未来步骤,您可能希望以任何方式守护该过程。这里可能有很多可能性。
这可能是一次艰难的演练,但互联网上各个阶段都有很多社区支持。
可能存在许多其他方法。例如,您可以自动启动 GNU/Linux 虚拟机,它可以在没有 Cygwin 的情况下完成所有这些操作。这需要您通过本地网络共享监视和同步的文件夹,最好仅在主机和虚拟机之间建立私有网络,然后使用 cifs-utils、samba 和 smbclient 包从 GNU/Linux 安装文件夹。所示的许多阶段将同样适用于为您的 Microsoft 主机提供 UNIX shell 功能的另一种方法。