也谈文件夹同步

Posted PowerShell免费软件

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了也谈文件夹同步相关的知识,希望对你有一定的参考价值。

前言

1 同步分为文件级别,和块级别。rsync是块级别。

2 如果是基于微软文件共享或samba协议,用robocopy.exe即可文件级别的同步。

3 通过任务计划,实现自动,定时同步。

4 如果是ftp,sftp,用winscp+powershell即可实现文件级别同步。原理是校验码,根本无需监视文件。

具体如下:

用脚本来实现

1本地dir

2远程dir

3对同一个文件,获取校验码,通过校验码来对比,得知文件是否改变。

4同步改变过的文件。

 

正文

【系统需求】

安装了powershell的win。

安装了powershell的linux发行版。但目前linux版有个小问题,需要把dll文件大小写改一下。

问:目前哪些版本linux能安装上powershell?

答:

?Ubuntu 14.04/16.04/Debian8.x 9.x

?CentOS 7.x/RHEL 7.x

?open SUSE 42及以上

?LINUX docker 容器

?Arch Linux (archl inux 没有版本号)

?Linux AppImage 容器(portable application single binary)  https://github.com/probonopd/AppImageKit

 

【安装】

管理员权限运行 Import-Module winscp

 

【升级】

管理员权限运行 update-Module winscp

 

传教士推荐使用。理由:

1支持ftp,sftp,webdav。

 

2winscp支持获取ftp服务器上的文件的校验码,从而得知是否文件是变化的。

有Get-WinSCPItemChecksum从而可以同步文件。

网页https://winscp.net/eng/docs/protocols的,Checksum calculation 章节,详细说明了这个内容。

 

3支持命令行显示ftp完成进度,文件权限,文件掩码,传输限速,是否覆盖。文件传输模式(ascii or 二进制)

详见此命令: New-WinSCPTransferOption

手册,所有例子在此: https://winscp.net/eng/docs/library_examples

 

【测试通过的脚本例子】ftp(sftp也大同小异)

 

#----------------------------
#用户输入部分
$本地路径 = ‘d:\‘
$远程路径 = ‘/UPLOAD/$ftp服务器 = ‘192.168.1.1$用户名 = ‘a‘
$用户密码明文 = ‘传教士测试通过-2017-06#----------------------------
#脚本main
$用户密码密文 = ConvertTo-SecureString $用户密码明文 -AsPlainText -Force
$我的登陆凭据 = New-Object System.Management.Automation.PSCredential ($用户名,$用户密码密文)
$ftp连接 = new-winscpsession -Protocol Ftp -HostName $ftp服务器  -Credential  $我的登陆凭据


$传输参数_二进制 = New-WinSCPTransferOption -TransferMode Binary  
Send-WinSCPItem -WinSCPSession $ftp连接 -Path "$本地路径/xx1.txt" -Destination "$远程路径" -TransferOptions $传输参数_二进制
#Receive-WinSCPItem -WinSCPSession $session -Path "/home/user/file.txt" -Destination "C:\download\"
Remove-WinSCPSession -WinSCPSession $ftp连接
#--------------完--------------

 

【命令列表】

PS C:\Windows\system32> (get-command -module winscp).name
Enter-WinSCPSession
Exit-WinSCPSession
ConvertTo-WinSCPEscapedString
Get-WinSCPChildItem
Get-WinSCPItem
Get-WinSCPItemChecksum
Invoke-WinSCPCommand
Move-WinSCPItem
New-WinSCPItem
New-WinSCPItemPermission
New-WinSCPSession
New-WinSCPTransferOption
Receive-WinSCPItem
Remove-WinSCPItem
Remove-WinSCPSession
Rename-WinSCPItem
Send-WinSCPItem
Start-WinSCPConsole
Sync-WinSCPPath
Test-WinSCPPath

 

以上是关于也谈文件夹同步的主要内容,如果未能解决你的问题,请参考以下文章

[工作积累] UE4 并行渲染的同步 - Sync between FParallelCommandListSet & FRHICommandListImmediate calls(代码片段

也谈隐藏盘符等windows 的管理员的策略实现

也谈IO完成端口

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

超大文件同步容易中断 怎么办?

#VSCode保存插件配置并使用 gist 管理代码片段