WinSCP上传下载过滤指定目录和文件

什么是WinSCP

WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端,同时支持SCP协议,它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑文件。这个工具是我们在进行开发和运维过程中常用的工具。

声明

此文是对于WinSCP官方文档的掩码部分的翻译,如理解和翻译不到位请见谅,官方文档原文见参考。

上传下载过滤文件

通过设置文件掩码,可以上传/下载时指定目录/文件,上传/下载时过滤指定的目录。
WinSCP上传下载过滤指定目录和文件

掩码

基本语法

可以使用的匹配模式

模式 描述 示例
* 匹配任意数量(包括零)的任意字符 *.doc; about*.html
? 恰好匹配一个任意字符 photo????.jpg
[abc] 匹配集合中的一个字符 index_[abc].html
[a-z] 匹配范围内的一个字符 index_[a-z].html

其他的字符将会被作为普通字符进行处理(除了下面描述的特殊字符)。

大小和时间约束

文件掩码可以使用如下的模式去通过时间和大小进行约束。

模式 描述 示例
>size[KMG] 匹配比给定大小大的文件,注意目录的大小默认是0,可以选择的单位有K,M,G *.bin>1M
<size[KMG] 匹配比给定大小小的文件 <1G
>yyyy-mm-dd[ hh:mm[:ss]] 匹配最后修改时间在给定日期或者时间之后的文件 >2012-01-01 >2012-02-29 08:47
>time[YDHNS][S] 匹配最后修改时间在指定时间区间内的文件,不能用于目录。可以用的单位有Y(年),D(天),H(小时),N(分钟),S(描述)。可选的S后缀表示将间隔前的时间舍入到间隔单位的开始,例如2DS指的是前天的开始(午夜)。0HS指的是当前小时的开始,关键字today,yesterday可以使用0DS,1DS一次替代 *.doc>1Y
>2HS
>yesterday
<yyyy-mm-dd[ hh:mm[:ss]] 匹配最后修改时间在给定的日期或者时间之前的文件 *.doc<2012-02-29 08:54:21
<time[YDHNS][S] 匹配最后修改时间在给定的时间区间之前的文件 <60D

同样可以使用>=<=操作符。对操作符(<>)进行转义只需要在它之前在写一个重复一个相同的操作符即可,例如filewith<<lessthan

想要组合约束,只需要将一个约束添加到列外一个约束之后,并且不要任何的分割符或者使用空格。例如需要选择创建于2013年的doc文件:*.doc>=2013-01-01<=2013-12-31

组合约束

在大多数上下文中,可以使用分号;或者逗号,来组合几个掩码。例如*.jpg; *.gif包含所有的JPGGIF图片。对分割符进行转义同样只需要在其前面重复一个相同的符号即可,如filewith,,comma

包含和排除掩码

掩码可以通过使用|分割来组合包含和排除掩码。例如*.jpg; *.gif | 2010*; 2011*这个掩码包含所有的JPGGIF图片,但是排除以2010和2011开头的。

包含和排除部分都可以为空,分别表明包含所有或者什么也不排除。当包含部分为空的时候,掩码以|开头;当排除部分为空时,可以省略掉末尾的|。排除掩码的优先级高于包含掩码,例如当文件同时匹配排除掩码和包含掩码时,那么它将会被排除。从列一方面来说,使用包含掩码有效地排除了所有不选择的文件和目录。转义同样只需要在其前面重复一个相同的符号即可,如filewith||pipe

目录掩码

对目录使用掩码,只需要在末尾添加反斜杠/即可,如images/。掩码*/匹配所有的目录。
注意如果使用文件掩码编辑对话框的话,目录掩码的末尾会自动添加/。让操作为非递归的话,使用掩码*/,注意不能包含其他的掩码,如|*/这里的|表名它是一个排除掩码。目录掩码是递归的,例如mages/即匹配目录/home/martin/images/也匹配目录/home/martin/images/avatars/。在传输和同步时,文件和目录是递归处理的,当一个目录被排除,那么这个排除目录内的文件或者子目录是不会进行文件掩码计算的,他们也和包含他的目录一样被排除。

路径掩码

当选择文件并且对于选择的目录敏感时,可以使用路径掩码。路径掩码和文件名掩码由/进行分割,例如/home/martinp/*.txt掩码匹配这个目录下面的所有文本文件。匹配包含子目录的所有文本的掩码,我们可以使用/home/martinp/*.txt; /home/martinp/*/*.txt/home/martinp*/*.txt/home/martinp/*/*.txt相似,但是精确到更低。

路径掩码是完全匹配全路径的,并不是匹配相对路径,例如public_html/wiki/并不匹配/home/martinp/public_html/wiki目录,即使是/home/martinp/是文件传输或者同步的根目录。部分路径掩码匹配绝对路径应当是*/public_html/wiki/

对于部分路径掩码使用\/没有区别,这种掩码对于本地路径和远端路径都是工作的,例如*/public_html/*.bak将会即匹配D:\Documents\public_html\也匹配/home/martinp/public_html/

也可以指定全路径去匹配指定的文件或者目录,无论本地还是远端,例如想只匹配指定的.csv目录,而不是所有的.csv目录,可以使用/home/martinp/data/.csv/掩码替代.csv目录。

例外

通常掩码*.*是一个例外,它匹配任意的文件或者目录,即使不包含任意的.。相反*.匹配任何不带拓展的文件或者目录。

参考

https://winscp.net/eng/docs/ui_editmask
https://winscp.net/eng/docs/file_mask

WinSCP上传下载过滤指定目录和文件

上一篇:windows server 2016 远程桌面mstsc DPI(更改文本、应用和其他项目大小) 设置


下一篇:一键安装Redmine