Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Npm 同步客户端';带有服务器的文件-Electron/node.js_Npm_Synchronization_Electron_Webtorrent_Zsync - Fatal编程技术网

Npm 同步客户端';带有服务器的文件-Electron/node.js

Npm 同步客户端';带有服务器的文件-Electron/node.js,npm,synchronization,electron,webtorrent,zsync,Npm,Synchronization,Electron,Webtorrent,Zsync,我的目标是制作一个电子应用程序,将客户端文件夹与服务器同步。为了更清楚地解释它: 如果客户端的主机服务器上没有这些文件,应用程序会将所有文件从服务器下载到客户端 如果客户端拥有这些文件,但服务器上的某些文件已更新,则应用程序只删除过时的文件(保留未修改的文件),并下载更新的文件 如果文件已从主机服务器中删除,但存在于客户端文件夹中,则应用程序将删除该文件 简单地说,应用程序必须确保客户端具有主机服务器文件夹的精确副本 到目前为止,我是通过wget-m实现的,但是wget经常不知道,一些文件发生了

我的目标是制作一个电子应用程序,将客户端文件夹与服务器同步。为了更清楚地解释它:

  • 如果客户端的主机服务器上没有这些文件,应用程序会将所有文件从服务器下载到客户端
  • 如果客户端拥有这些文件,但服务器上的某些文件已更新,则应用程序只删除过时的文件(保留未修改的文件),并下载更新的文件
  • 如果文件已从主机服务器中删除,但存在于客户端文件夹中,则应用程序将删除该文件
  • 简单地说,应用程序必须确保客户端具有主机服务器文件夹的精确副本

    到目前为止,我是通过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实现
  • 如果客户端拥有这些文件,但服务器上的某些文件已更新,则应用程序只删除过时的文件(保留未修改的文件),并下载更新的文件。使用:-删除源文件-删除,具体取决于您是要从源文件还是目标文件中删除过期文件

  • 如果文件已从主机服务器中删除,但存在于客户端文件夹中,则应用程序将删除该文件。使用:rsync的删除选项

    rsync-a--删除源目标


  • rsync是一种很好的方法,但您需要通过node.js访问它

    这样的npm包可能会帮助您:

    但在windows系统上,事情会变得稍微困难一些:

    rsync -av --delete https://mirror.abcd.org/xyz/xyz-folder/ my-client-xyz-directory/