我正在开发一个大型 Java Web 应用程序,该应用程序受到集中版本控制,但源文件用于构建和运行实际服务器,然后在运行时将我处理的所有文件复制到随机临时目录中。
我的问题是,我需要重建这个巨大的应用程序才能查看我的文件的任何更改,或者跟踪我的所有更改并将我更改的文件复制回其源位置,然后再将它们提交回源代码管理。
我的问题是:是否有一个可以运行的命令行脚本来监视源文件夹中的任何更改并自动将更改的文件复制到临时文件夹 X?
这个想法是为了消除因必须手动缓解两个位置的问题而导致的人为故障点。
答案1
我建议免费文件同步,它似乎能够创建一个脚本,每隔几秒自动同步两个文件夹。我个人还没有玩过,但它看起来很有希望。
答案2
您是否考虑过使用 RoboCopy?http://ss64.com/nt/robocopy.html
可以将 RoboCopy 设置为在经过一段规定的时间后和/或数据集发生大量更改后复制数据。
/MON:n:监控源;当发现超过 n 个变化时再次运行。/MOT:m
:监控源;如果发生变化,则在 m 分钟后再次运行。
答案3
你可能还想看看(老化)增量复制客户端和服务器。基本上,它是一个类似 Linux 的同步适用于 Windows 的实现,可编写脚本(如果需要,可以使用 Windows 调度程序),其主要优点是仅改变部分修改后的文件(是的,就是文件!)的传输量。这可以为大型项目节省大量流量。当然,缺点是它必须先构建并传输文件列表。
此外,还有一些(小)注意事项:
- 由于它是较旧的软件,您可能需要更换cygwin1.dll在 Windows 机器上。(如果您在 Linux 和 Windows 之间同步文件,则仅使用赛格威因为当时底层框架无法正确处理 16 位 Unicode/UTF-8 文件名转换。)
- 它并不是那么用户友好,你应该看看 Linux'rsync 手册页充分发挥其潜力。
- 在 Windows 上,它需要一个»客户端«和一台»服务器«机器。
- 如果服务器是 Linux 机器,你必须设置同步正确。
- 不支持 Windows 的卷影复制(但可能不需要)。
嗯,它也有优点(这就是我仍然每天使用它的原因):
- 与 *NIX rsync 和 rsyncd 完全兼容。一个久经考验、广为人知且高效的同步系统。仍然如此。
- 保持较小的开销:只有更改的数据(甚至文件内部的数据!)才会通过网络传输。因此,如果您是远程办公或通过慢速连接连接到服务器,这也是非常好的选择。
- 显然是万无一失。多年来,我已经同步过很多 GB 的数据,在“修补”目标文件时没有出现任何缺陷。尽管一开始我觉得这个概念有点令人担忧。
- 我仍然每天使用 DeltyCopy 将文件从 Windows 计算机备份到中央 Linux 服务器和 Windows 2003 服务器。如果安装正确,它会运行得非常好,而且很安全。
好吧,由你决定。玩得开心!(并让我们了解 FreeFileSync!)
答案4
一个有用的命令是xcopy /m src\* dest
。这将把所有文件从 src 复制到 dest,并且清除在所有 src 文件上设置存档位。每当您触摸 src 文件时,Windows 都会自动设置存档位。下次运行时,xcopy /m
它只会复制已更改的文件。
如果要连续运行它,请编写一个小脚本,例如
@echo off
echo Watching for changes to %1 ...
:top
xcopy /m /y %1\* %2 | find /v "File(s) copied"
timeout /t 2 >nul
goto :top