2021年4月26日星期一

dupeGuru 免费开源跨平台的重复文件搜索与硬盘空间清理利器

 


dupeGuru

最新下载:开源发布地址

dupeGuru是跨平台(Linux,OS X,Windows)GUI工具,用于在系统中查找重复文件。它主要用Python 3编写,具有使用多个GUI工具包(全部使用相同的核心Python代码)的特性。在OS X上,UI层是用Objective-C编写的,并使用Cocoa。在Linux 7 Windows上,它是用Python编写的,并使用Qt5。

dupeGuru是在计算机上查找重复文件的工具。它可以扫描文件名或内容。文件名扫描具有模糊匹配算法,即使它们不完全相同,也可以找到重复的文件名。dupeGuru在Mac OS X和Linux上运行。

dupeGuru是高效的。得益于其快速的模糊匹配算法,您可以在几分钟内找到重复的文件。dupeGuru不仅查找相同的文件名,而且查找相似的文件名。

dupeGuru擅长音乐。它具有特殊的音乐模式,可以扫描标签并在重复结果窗口中显示特定于音乐的信息。

dupeGuru的图片很好。它具有特殊的图片模式,可以模糊扫描图片,使您可以查找相似但不完全相同的图片。

dupeGuru是可定制的。您可以调整其匹配引擎,以准确找到要查找的重复项类型。帮助文件的“首选项”页面列出了您可以更改的所有扫描引擎设置。

dupeGuru是安全的。其发动机在设计时特别考虑了安全性。它的参考目录系统及其分组系统可防止您删除您不想删除的文件。

对重复项做任何您想做的事。您不仅可以删除dupeGuru找到的重复文件,还可以将它们移动或复制到其他位置。还有多种方法可以对结果进行过滤和排序,以轻松剔除错误的重复项(适用于低阈值扫描)。

支持的语言:英语,法语,德语,中文(简体),捷克语,意大利语,亚美尼亚语,俄语,乌克兰语,巴西语,越南语。

2021年4月22日星期四

Linux下搭建WebDAV服务器

 

首先介绍一下WebDAV

1.简而言之,WebDAV是一种HTTP1.1的扩展协议,可以在像操作本地文件夹一样操作服务器上的文件夹,还可以支持版本控制。

2.WebDAV的优势: 一套自己定义的安全完善的身份验证机制。穿墙 HTTPS传送数据,使用一个TCP连接传送所有文件,方便的客户端工具,和局域网中的文件共享一样简单使用。

开始前先确保你的server上安装了apache2,然后就是启动webdav服务。


sudo a2enmod dav_fs

sudo a2enmod dav

sudo a2enmod dav_lock

创建一个可以共享目录并授权给apache

sudo mkdir /var/www/webdav 

sudo chown www-data:www-data /var/www/webdav

创建一个存放密码的目录并创建登陆用户;

sudo mkdir /var/webdavpasswd

创建用户

sudo htpasswd -c /var/webdavpasswd/passwd.dav admin

授权密码目录给apache

sudo chown www-data:www-data -R /var/webdavpasswd

设置密码文件读写权限

sudo chmod 640 /var/webdavpasswd/passwd.dav

最后写入Apache2配置文件并重启一下apach2。

配置虚拟主机:

sudo vim /etc/apache2/sites-available/webdav.conf

在文件中插入以下内容并保存(示例)

 <VirtualHost *:448>

       ServerName example.com
       ServerAlias example.com

         SSLEngine on
         SSLCertificateFile       /etc/ssl/fullchain.crt
         SSLCertificateKeyFile              /etc/ssl/private.pem

         DocumentRoot  /mnt/
  Alias  /webdav /mnt

         <Directory  /mnt/>
             DAV On
      Options +Indexes 
             IndexOptions FancyIndexing
             AddDefaultCharset UTF-8
      AuthType Basic
      AuthName "WebDav"
      AuthUserFile /var/webdavpasswd/passwd.dav
      Require valid-user
      Order allow,deny
             Allow from all 
         </Directory>

 </VirtualHost>

启用已创建站点配置文件::

a2ensite webdav.conf

测试配置文件语法:

sudo apachectl configtest

添加开放端口:

sudo vim /etc/apache2/ports.conf

在文件中插入以下内容并保存(示例)

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80
Listen 83

<IfModule ssl_module>
Listen 443
</IfModule>

<IfModule mod_gnutls.c>
Listen 443
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

重新加载apache2

systemctl reload apache2

验证

使用命令行 cadaver 进入登录

sudo apt-get install cadaver

cadaver http://127.0.0.1:80/webdav

2021年4月12日星期一

配置rc-local开机自启动功能

一、适用于Debian10+:

某些软件并添加开启启动的服务,很多时候需要手动不添加,一般我们都是推荐添加到/etc/rc.local文件,但是Debian 11默认不带/etc/rc.local文件,而rc.local服务却还是自带的

查看默认rc.local服务文件:cat /lib/systemd/system/rc.local.service

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.local is executable.
[Unit]
Description=/etc/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no

并且默认情况下这个服务还是关闭的状态

systemctl status rc-local   查看状态显示如下:

● rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: enabled)
  Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: inactive (dead)

为了解决这个问题,我们需要手动添加一个vi /etc/rc.local文件

sudo touch /etc/rc.local

编辑相应文件vi /etc/rc.local输入以下内容:

#!/bin/bash
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0

设置权限    chmod +x /etc/rc.local

启动rc-local服务     systemctl start rc-local

再次查看状态     systemctl status rc-local
显示如下:

● rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: enabled)
  Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: active (exited) since Thu 2017-08-03 09:41:18 UTC; 14s ago
  Process: 20901 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)

Aug 03 09:41:18 xtom-hk systemd[1]: Starting /etc/rc.local Compatibility...
Aug 03 09:41:18 xtom-hk systemd[1]: Started /etc/rc.local Compatibility.


然后你就可以把需要启动的命令放到/etc/rc.local中了,(exit 0之前)

尝试重启作为命令生效。


二、适用于Ubuntu18+:

1.手动创建rc-local.service文件:

sudo touch /etc/systemd/system/rc-local.service
编辑rc-local.service
sudo vim /etc/systemd/system/rc-local.service

在文件中写入如下内容:

#  SPDX-License-Identifier: LGPL-2.1-or-later
#
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.local is executable.
[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no

[Install]
WantedBy=multi-user.target

保存。

或利用系统默认文件建立软连接
ln -s /usr/lib/systemd/system/rc-local.service    /etc/systemd/system/rc-local.service
编辑rc-local.service
sudo vim /etc/systemd/system/rc-local.service
加入字段[Install]
[Install]
WantedBy=multi-user.target

保存。

2、终端一键写入方式创建rc-local.service文件:

sudo echo "
#  SPDX-License-Identifier: LGPL-2.1-or-later
#
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.local is executable.
[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no

[Install]
WantedBy=multi-user.target
" >> etc/systemd/system/rc-local.service

3.接下来就是创建一个rc.local:

sudo touch /etc/rc.local

编辑 rc.local
sudo vi /etc/rc.local

写入以下内容:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0


在 exit 0 行前面添加待开机启动的命令:

# 延时30秒后执行命令
sleep 30

# 示例:后台启动chfs服务:
nohup /usr/local/app/chfs/chfs --file /usr/local/app/chfs/chfs.ini &

# 示例:挂载Samba共享
mount -t cifs -o username=User,password=Admin-1113,gid=0,uid=0, //192.168.1.52/数据盘  /mnt/SMB


exit 0


给rc.local 添加执行的权限
sudo chmod +x /etc/rc.local


4.接下来是启动服务:


①.刷新systemctl配置
systemctl daemon-reload

②.设置开机启动
systemctl enable rc-local.service

③.启动服务
sudo systemctl start rc-local.service

④.测试服务的状态
sudo systemctl status rc-local.service

⑤.重启服务
sudo systemctl restart rc-local.service

2021年4月10日星期六

工作见闻和吐槽

来源见:原文

蛙兄,我来找你吐槽了。


年前在南京帮新开工项目对预算,这次对预算的经历真是让我大开眼界。


我在北京和西安都对过预算,以至于我对双方核对预算的理解就是,双方把自己画的图形,出的量放在一起对比,求同存异,查漏补缺,从而形成一份双方认可的依照图纸和基本符合现场实际的客观公正的预算。


而来到南京这边,咨询公司早就拿到我们这边画的模型。初次见面,对方首先提出一堆我们需要修改的问题,然后以我们的模型为准进行修改出量,询问他们钢筋总量多少,他们就摆出一副高高在上的样子,说:我是来审你们的!


整个核对过程中,他们只在我们的模型基础上审核多的量,对于遗漏的构件和工程量,只字不提。对于我们在核对中自己发现的遗漏的点,也会以各种理由不给或打折扣给,比如砌体加筋,门窗洞口不给,说剩余砌体高度太低,不给;对于构造柱马牙槎,说门窗洞口边不需要设置,两边都不给。


其实这些东西在软件计算中都会自动扣减的,但这种完全不讲道理扣减,高高在上的作风真的很让人恼怒又难以信服。有时候争执不下,让甲方成本做裁决,反而90%都是同意我们的观点。


很多时候争执的问题都是基本常识性的问题,而为什么会有这么多争执呢?原因很简单,跟我对量的是个97年的小姑娘,还在对量之余修改着毕业论文。她明明专业知识那么浅薄且有限,却又那么自信地听不进去别人的话,认为自己的理解就是完全正确的。


对于这些零零碎碎的问题的不断争执,耗费了我大量的精力和耐心,我其他同事开始第二栋楼,我们还在核对第一栋的装修,最开始我晚上回去都再检查她的审核,在Excel里逐条记录问题,第二天再逐条消除,这样拉锯战了将近一个月。


后来随着核对时间的延长,从项目到业主路上的奔波,应付项目领导的热情招待(虽然我极度反感,我只想多睡会觉),业主要求周末也要加班核对,整个人处于疲劳状态,根本没有那么多时间去回顾白天核对中的问题,一直向前赶进度。


第一栋楼四万多平,是去年年底自己画的,当时图纸问题记录比较全面,对起来毫无压力;第二栋楼两万九千平,是其他同事画的,核对图纸感觉参数错的太多,执着的我在核对期间用零星时间删了又重新画的,难免仓促;第三栋楼三万平,是这次一起来对量的同事画的,他也对跟我核对的人感到头大,非让我对,当时也没想太多,觉得我这个同事建模水平还可以,模型没什么问题让她审核也不会怎么样,再加上我们已经磨合了这么久,双方应该还可以继续合作。


于是我在第二栋楼即将收尾时接了第三栋楼,此时离春节假期就剩十天,我既没有时间回顾第二栋楼看是否有遗漏,也没有太多的时间熟悉第三栋楼,直接拿着同事的模型给她审核。


等节后这几天检查这三栋楼时,第二第三栋楼都发现有遗漏的构件,比如第三栋楼有两层板受力筋都没有布置,像这种简单的问题,咨询公司的人一眼就能看出来,然而她只对多的地方删减,对于明显的遗漏只字未提。总体下来少了大概二十多吨钢筋。


业主说节后双方再复核一下,我赶紧去找她,结果人家不然就回复的慢,不然就打电话不接,提出的问题改了一部分,增加量的同时还是一贯作风,再扣掉一些量,美其名曰之前给多了,然后我们又开始了线上拉锯战,拖拖拉拉硬把三天拖到,说剩下的问题交给二审解决吧。


碰见这样的真是让我又气又恼又无可奈何,我一开始还很天真的以为,大家真心换真心,可以愉快地对量,第一栋楼她思路不清,填清单量时一些量填重复多给了一些,于是我好意提醒她,她一副死鸭子嘴硬强词夺理的口气:报表出来多少就是多少。不过后来也修正了她的错误。我想着她也可以本着客观公正的态度进行审核,现在想来也不过是愚蠢的理想主义和自作聪明而已。


由此让我很怀念之前跟我对量的人,他们都是比我年长更有经验的人,他们当时本着第三方咨询较为客观公正的态度,也曾经给过我提醒,所以此次之行之前,我一直对第三方在心里很尊重,觉得他们是专业,又很有职业操守的一群人。


这次对量,让我见识了行业内不同的风气,开了眼界。


不过也有值得反思的地方,如果我专业知识真的过硬,敢争,也不至于纵容她。如果我稍微强势一点,不想着是过来帮忙,给项目领导添麻烦,直接投诉这个人太叽歪,要求换人,会不会更顺畅一些。如果我后期再有责任心一点,工作做得细一点,也不至于出现这样的遗漏。


如果我早点看清现实,看清人性,不把希望放在别人身上,就不会那么轻易相信别人。


一只渴望逆袭的小菜鸟

2021年4月8日


2021年4月5日星期一

Windows下WebDAV映射网络驱动器

 


1. 改注册表以支持http

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters 下,把 BasicAuthLevel 的值改为 2 ( ‘1’ 默认只支持 HTTPS,’2’ 支持 HTTP 和 HTTPS)

2. 重启服务

以管理员身份运行以下命令完成服务重启
net stop webclient
net start webclient
 


3. 映射网络驱动器

计算机 –> 右键 –> 映射网络驱动器 –> 填写相应的信息 –> 完成

2021年4月3日星期六

NSSM-让普通程序以windows服务方式运行

   NSSM是一款智能智能高效的系统服务管理软件。这款软件能够将exe应用封装成windows服务软件,而且还可以自动守护封装了的服务,程序挂掉了可以重启,同时安装简单快捷,修改方便。

官网:http://www.nssm.cc/download

下载地址:http://www.nssm.cc/ci/nssm-2.24-101-g897c7ad.zip


软件介绍

NSSM是一款系统服务管理软件,该软件的功能就是将exe应用封装成windows服务软件,即将普通exe程序封装成服务使之像windows服务可以设置自动启动等,并且可以监控程序运行状态,程序异常中断后自动启动,实现对进程的保护,操作简单,使用非常的方便。

功能特色


1、支持普通exe程序(控制台程序或者带界面的Windows程序都可以)

2、安装简单,修改方便,不仅支持图形界面操作,也完全支持命令行设置

3、可以重定向输出(并且支持Rotation)

4、可以自动守护封装了的服务,程序挂掉了后可以自动重启

5、可以自定义环境变量

6、特别适合一些不带随计算机启动功能的软件来封装成服务

使用方法

下载完解压到某个路径,然后将win64/win32文件夹路径(f:\software\nssm\win64)添加到环境变量Path即可。

NSSM用法

F:\Software\nssm

$ nssm

NSSM: The non-sucking service manager

Version 2.24-101-g897c7ad 64-bit, 2017-04-26

用法: nssm <option> [<args> ...]


1、安装服务

1)图形界面安装服务:  nssm install [<servicename>]

提示:需要管理员权限

2 )命令行方式安装而无需确认:nssm install <servicename> <app> [<args> ...]

2、编辑服务

1)图形界面: nssm edit <servicename>

2)命令行方式

检索或编辑服务:  nssm dump <servicename>

获取某项配置信息:nssm get <servicename> <parameter> [<subparameter>]

单独设置某项配置:nssm set <servicename> <parameter> [<subparameter>] <value>

重置某项配置: nssm reset <servicename> <parameter> [<subparameter>]

3、管理服务

1)启动服务:nssm start <servicename>

2)停止服务:nssm stop <servicename>

3)重启服务:nssm restart <servicename>

4)查看服务状态:nssm status <servicename>

nssm statuscode <servicename>

5)手动轮转日志文件:nssm rotate <servicename>

6)nssm processes <servicename>

4、移除服务

1)弹出确认窗口:nssm remove [<servicename>]

2)不弹出确认窗口: nssm remove <servicename>  confirm

加confirm后直接移除,而不会弹确认窗口

2021年3月1日星期一

Windows10启用自带WebDav服务


1.如果有固定IP或域名,可以构思一种应用场景:把平常自己收藏的书放入到webdav文件夹,利用内网穿透,想看的时候通过静读天下下载来看。
2.用solid explorer 等app可以实现电脑和手机上文件的互传。

备注:

必须使用 基本身份验证 ,因为使用 Windows身份验证 在一些手机app端并不支持,会提示 无法找到FTP服务器

*IIS网站虚拟目录不支持硬盘根目录,如C: D:这类.

安装webdav服务

1、[启用或关闭windows功能]-[internet infomation services]勾选:IIS管理控制台,基本身份验证,请求筛选,webdav发布,静态内容,默认文档,目录浏览.

网站设置(IIS管理中一个网站的结构分为网站与虚拟目录这两级.IIS部署后会有一个默认名为Default web site网站.)

2、一级目录 Default Web Site 中设置

       webdav创作规则中 ,启用Webdav  

       身份验证中,启用基本身份验证;禁用匿名访问.

       鼠标移到一级目录 Default Web Site 上 》单击右键》点击 添加虚拟目录  

       示例别名:webdav    物理路径选择数据目录

3、二级目录 webdav 中设置

       WebDav创作规则中,添加创作规则

       允许访问:全部内容;允许访问此内容:所有用户;权限:读取,源,写入

       身份验证 中启用基本身份验证;禁用匿名访问.

       webdav创作规则和身份验证默认会继承上级的网站设置,若没有,以自己需求添加这两项.

4、完成,此时已经可以使用移动端APP来访问windows的webdav.


图文教程


一、安装IIS+WebDav设置

1.在桌面上,依次点击开始菜单——控制面板——程序——卸载程序——启用或关闭windows功能,设置如下:



2.点击确定完成,不用重启。


二、配置IIS+WebDav

注意:这里有2个坑!


1.添加虚拟目录

在桌面上,点击开始菜单,输入“管理”,点击“Internet Information Services (IIS)管理器”


进入IIS管理器后,在左边“连接”一栏,依次点击到“Default Web Site”,右击添加虚拟目录。

添加别名(这里我的目录名称是dav)和物理路径,点击确定。

2.设置WebDAV创建规则。

第1个大坑,注意下面的目录:

这里有三个目录,第一层是RKKMBQQQEQJAINV,第二层是Default Web Site,第三层是dav,在这里,我们先设置第三级目录,dav的“WebDAV创建规则”。

点击

然后,在右边点击添加

设置如下:



注意,这里不需要设置用户权限!


好了,到这里,WebDAV创建规则 就创建好了,第一、二层目录的WebDAV创建规则我们不用管。但是!!!在第二层目录“Default Web Site”中,要将WEBDAV启用,设置如下:

到此,WebDAV创建规则完全设置好。


3.身份验证设置。

第2个大坑,同样地,我们只设置第三层目录,即dav目录的身份验证即可,设置如下:

开启“基本身份验证”。有人会问:网上不是说要用“windows身份验证”吗?这个验证有两个问题,一是之后会反复弹出来让你确认,整个人都奔溃了,二是“windows身份验证只能在pc上验证,手机端不一定能够验证成功。所以我们开启“基本身份验证”。

注意:这时在第一层RKKMBQQQEQJAINV,第二层Default Web Site,两个目录不用设置,身份验证用系统默认的就行。如果,如果后来你发现配置默认了还是登录不了,那选择“匿名身份验证”。

最后,在三层目录下都开启下目录浏览(好像只开启最后一个dav目录也没关系)。

重启服务器,配置完毕。

三、使用raidrive在PC上连接测试webdav


RaiDrive 是一款能够将一些网盘映射为本地网络磁盘的工具,支持 Google Drive、Google Photos、Dropbox、OneDrive、FTP、SFTP、WebDAV。

RaiDrive 可以方便的将网盘映射为本机的网络磁盘,对于使用来说更加方便。



下载安装后,在设置中将语言设置为中文。

点击添加后,设置如下:

点击确定,完成。


四、新增用户

用windows自带的用户既不安全也不方便,我们可以新增下用户。

1.进入新增用户平台

按win+r键,输入mmc;点击文件——添加删除单元——本地用户和组——添加——确定。


2.新增用户,设置密码

点击用户——在右侧右键选择“新用户”,添加用户名和密码。

3.加新用户加入到IIS_IUSRS组

确定后,点击新建的用户admin,右击属性,点击“隶属于”,删除“users”分组,再点添加——高级——查找,选择“IIS_IUSRS”开头的用户组,一直点确定。

4.为webDAV文件夹增加IIS_IUSRS权限

在资源管理器中找到webDAV文件夹,右击属性——安全——编辑——添加——高级——查找,选择“IIS_IUSRS”、的用户组,一直点确定。注意:有一个“……的 权限”对话框,需要把新加的用户组读写权限都加上。

5.返回到RaiDrive,修改用户名和密码,验证成功。


五、使用静读天下app下载书籍


1.将要看的书放入webdav文件夹“dav”。

2.进入静读天下app,点击最近阅读——我的文件,选择webdav

3.输入用户和密码

输入url(是http,不是https),用户密码,点击确定

4.发现一个问题,无法下载:


这是因为web服务不认识mobi格式,需要在MIME中设置下。

5.在MIME中新增扩展名

进入IIS管理器,点击第二层目录DAV,点击MIME类型

添加文件类型:


文件扩展名 .*MIME类型 application/octet-stream

重启服务器完成设置


如果传送文件最大不能超过30M,需要更改下配置文件。

在iis的管理器里修改:
 
打开某一个网站或者点击根节点,在最下方的“管理”部分,选择“配置编辑器”
1.针对指定网站设置
然后找到节点system.webServer/security/requestFiltering
将里面的requestlimits下的maxAllowedContentLength的值(原本为30000000,即30M)修改为1024000000,即1G即可。
这样修改直接就能生效,无需重启iis或者服务器。
 
2.更改配置文件
system.web --> 
<httpRuntime maxRequestLength="500000" enableVersionHeader="false" maxQueryStringLength="3584" executionTimeout="600"/>