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后直接移除,而不会弹确认窗口