Npm 同步客户端';带有服务器的文件-Electron/node.js
我的目标是制作一个电子应用程序,将客户端文件夹与服务器同步。为了更清楚地解释它:Npm 同步客户端';带有服务器的文件-Electron/node.js,npm,synchronization,electron,webtorrent,zsync,Npm,Synchronization,Electron,Webtorrent,Zsync,我的目标是制作一个电子应用程序,将客户端文件夹与服务器同步。为了更清楚地解释它: 如果客户端的主机服务器上没有这些文件,应用程序会将所有文件从服务器下载到客户端 如果客户端拥有这些文件,但服务器上的某些文件已更新,则应用程序只删除过时的文件(保留未修改的文件),并下载更新的文件 如果文件已从主机服务器中删除,但存在于客户端文件夹中,则应用程序将删除该文件 简单地说,应用程序必须确保客户端具有主机服务器文件夹的精确副本 到目前为止,我是通过wget-m实现的,但是wget经常不知道,一些文件发生了
最近我听说了zsync windows和webtorrent npm包,但我不确定哪种方法是正确的,以及如何真正实现我的目标。感谢您的帮助。如果您有对服务器的ssh访问权限,可以通过Node.js包使用一种方法 关于如何实现这一点,有一篇很好的文章。由于它是一个文件夹列表(因此具有没有空格的简单文件名等),您可以使用下面的代码选择文件名
# Get last item from each line of FILELIST
awk '{print $NF}' FILELIST | sort >weblist
# Generate a list of your files
find -type f -print | sort >mylist
# Compare results
comm -23 mylist weblist >diffs
# Remove old files
xargs -r echo rm -fv <diffs
您可以使用
rsync
,它广泛用于备份和镜像,并作为日常使用的改进复制命令。它提供了大量选项,可以控制其行为的各个方面,并允许非常灵活地指定要复制的文件集
它以其增量传输算法而闻名,该算法通过只发送源文件和目标中现有文件之间的差异来减少通过网络发送的数据量
对于您的用例:
rsync是一种很好的方法,但您需要通过node.js访问它 这样的npm包可能会帮助您: 但在windows系统上,事情会变得稍微困难一些:
rsync -av --delete https://mirror.abcd.org/xyz/xyz-folder/ my-client-xyz-directory/