阅读视图

发现新文章,点击刷新页面。
☑️ ☆

使用 rdfind 清理重复文件并用软链接替代:实用教程

在日常使用电脑(服务器)的过程中,重复文件问题时常困扰我们。无论是备份文件、下载的资源,还是代码项目,时间久了,文件夹里总会堆积大量内容相同但占用空间的文件。清理这些重复文件不仅能节省硬盘空间,还能让文件管理更加高效。

今天,我们来学习如何使用强大的工具 rdfind 自动清理重复文件,并用软链接(symlink)替代多余的副本。

什么是 rdfind?

rdfind 是一个开源工具,全称 redundant data find,它可以快速扫描指定目录,找到重复文件,并对它们执行一系列处理操作,如保留一个文件、删除其余文件、用硬链接或软链接替代等。

为什么使用软链接?

软链接是一种指向目标文件的快捷方式。与删除重复文件相比,用软链接替代可以保持目录结构和文件路径不变,同时减少磁盘占用。这对程序开发、文件管理和数据备份非常有用。

开始使用 rdfind

1. 安装 rdfind

根据您的操作系统,安装 rdfind 十分简单:

Ubuntu/Debian 系统:

sudo apt install rdfind

CentOS/RHEL 系统:

sudo yum install rdfind

MacOS 系统:

brew install rdfind

2. 运行 rdfind

以下是一个简单的命令示例,用来查找重复文件并用软链接替代:

rdfind -makehardlinks false -makesymlinks true -removeidentinode false <目录路径>

参数解释:

•	-makehardlinks false:禁用硬链接(我们只使用软链接)。
•	-makesymlinks true:启用软链接功能。
•	-removeidentinode false:防止移除相同节点的文件(确保保留目标文件)。
•	<目录路径>:指定要扫描的目录路径。

3. 实战操作

假设场景:

我们需要清理 /home/user/docs 目录中的重复文件,并用软链接替换多余的文件。

运行以下命令:

rdfind -makehardlinks false -makesymlinks true -removeidentinode false /home/user/docs

示例运行结果:

执行完命令后,rdfind 会生成一份详细的扫描报告。例如:

Now scanning "/home/user/docs", found 10 files.
Total size is 1.2GB, saved 800MB by removing redundancy.

报告中会显示扫描的文件数量、释放的空间,以及哪些文件被保留或替换。

4. 注意事项

•	谨慎操作:运行命令前,建议对重要文件做好备份。
•	结果校验:rdfind 的处理是可逆的,但为了避免误删,请仔细检查生成的报告。
•	符号链接问题:有些程序可能不完全支持软链接,因此需要根据实际需求选择硬链接或软链接。

适合哪些场景?

•	清理备份文件:多个备份文件夹中有大量重复内容,使用软链接可以节省空间。
•	开发项目优化:项目依赖或缓存文件夹中重复内容占用存储。
•	多媒体整理:照片、视频文件去重,保持相册目录完整。

总结

rdfind 是一款简单但强大的工具,配合软链接功能,可以轻松清理重复文件并保持文件路径的一致性。通过本教程,您可以快速掌握如何在实际场景中高效利用 rdfind 来管理文件。

赶紧试试吧!对电脑的文件管理效率一定会大大提升!如果您有任何问题或想法,欢迎在评论区交流。 😊

参考命令:

rdfind -makehardlinks false -makesymlinks true -removeidentinode false <目录路径>

The post 使用 rdfind 清理重复文件并用软链接替代:实用教程 appeared first on 无主题博客.

☑️ ☆

kali 使用John破解zip压缩包的密码

首先将压缩包上传至kali机器,然后使用zip2john命令爆出hash文件

# zip2john license.zip >> passwd.txt
license.zip/license/ is not encrypted! 
ver 1.0 license.zip/license/ is not encrypted, or stored with non-handled compression type
ver 2.0 efh 9901 license.zip/license/license.dat PKZIP Encr: cmplen=630, decmplen=2810, crc=5ED111EF
ver 2.0 efh 9901 efh 7075 license.zip/license/licenseʺ³ɵٖ·.txt PKZIP Encr: 2b chk, TS\_chk, cmplen=79, decmplen=53, crc=A6269FCE
NOTE: It is assumed that all files in each archive have the same password.
If that is not the case, the hash may be uncrackable. To avoid this, use
option -o to pick a file at a time.

然后使用john命令,计算hash文件

# john passwd.txt 
Warning: invalid UTF-8 seen reading passwd.txt
Using default input encoding: UTF-8 Loaded 1 password hash (ZIP, WinZip [PBKDF2-SHA1 128/128 SSE2 4x])
Will run 6 OpenMP threads
Proceeding with single, rules:Wordlist
Press 'q' or Ctrl-C to abort, almost any other key for status
Almost done: Processing the remaining buffered candidate passwords, if any
Warning: Only 14 candidates buffered for the current salt, minimum 24 needed for performance.
Proceeding with wordlist:/usr/share/john/password.lst, rules:Wordlist **123321**           (license.zip/license/license.dat)
1g 0:00:00:01 DONE 2/3 (2019\-08\-13 09:57) 0.5780g/s 16544p/s 16544c/s 16544C/s 123456..Open
Use the "--show" option to display all of the cracked passwords reliably

注意,该行前边的内容即为压缩包的密码

本文来自吾爱破解论坛

https://www.52pojie.cn/thread-984024-1-1.html
https://www.bilibili.com/video/av57617949/

The post kali 使用John破解zip压缩包的密码 appeared first on 无主题博客.

☑️ ☆

IMAP命令“APPEND”(至Sent Messages)失败, 服务器出错:Mail has saved by smtp!。

MacOS下使用自带邮件客户端Mail.app发邮件有错误发生,但对方能收到邮件,具体报错内容如下:

无法将1封邮件移到邮箱“QQ”

IMAP命令“APPEND”(至Sent Messages)失败, 服务器出错:Mail has saved by smtp!。

Snipaste_2023-05-24_11-32-55

解决方法如下:

邮件–>设置–>账户(选择自己的发件账户)–>邮箱行为中将发件箱改为已发出邮件

修改后,已发邮件将会保存在本地,不会在服务器保存。如有在服务器保存的需求,需到邮箱管理页面中设置,这里以QQ邮箱为例。

通过网页登录QQ邮箱,设置–>账户中勾选SMTP发信后保存到服务器选项

至此全部配置完成,发信后Mail.app不再提示上述错误,且已发邮件也能在腾讯邮箱中保存。

The post IMAP命令“APPEND”(至Sent Messages)失败, 服务器出错:Mail has saved by smtp!。 appeared first on 无主题博客.

☑️ ☆

解决UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 108: ordinal not in range(128)

import sys
reload(sys)
sys.setdefaultencoding('utf8')

混淆了 python2 里边的 str 和 unicode 数据类型。

1、你需要的是让编码用实际编码而不是 ascii

2、对需要 str->unicode 的代码,可以在前边写上以上代码,把 str 编码由 ascii 改为 utf8 (或 gb18030)、

3、python3 区分了 unicode str 和 byte arrary,并且默认编码不再是 ascii

参考:解决UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 108: ordinal not in range(128)

The post 解决UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 108: ordinal not in range(128) appeared first on 无主题博客.

☑️ ☆

Linux 基于 Transmission 搭建 PT 环境并实现外网访问

背景环境

群晖NAS + CentOS8主机

Transmission部署在CentOS主机上,通过NFS协议挂载群晖NAS的DownLoad文件夹作为PT下载的存储目录;通过内网穿透实现外网访问Transmission,实现远程下载;基于群晖NAS文件系统来管理下载好的资源。

安装 Transmission

使用yum安装

Transmission 包含在 EPEL 拓展仓库中,安装前需要安装 epel-release

yum -y install epel-release
yum -y update

EPEL 源安装成功后,即可安装 Transmission

yum install transmission-daemon

配置

安装成功后,输入 systemctl start transmission-daemon.service 即可启动 Transmission。如果用浏览器打开 web 端(http:// 域名:9091 或 http://IP 地址:9091),会提示 “403: Forbidden”(页面打不开可能是防火墙没有放行相应端口),这是因为 Transmission 还没配置好。

因而,需要输入 systemctl stop transmission-daemon.service 停止 Transmission 服务,再进行配置。

注意,如果安装后没有启动过 Transmission,是不会生成配置文件。因而,需要先启动服务,再停止服务,生成 json 配置文件后再进行配置。值得注意的是,如果在服务启动时修改配置文件再重启服务,配置文件会自动恢复成重启前的内容。

接下来,就可以打开配置文件:

vi /var/lib/transmission/.config/transmission-daemon/settings.json

配置文件的参数非常多,可按自己需求进行修改。如果对 vi 编辑器不了解,Google 或百度一下就有简单的使用介绍。以下条目的修改是本人自己在用的参数:

"download-dir":"/data/nas-download/pt",
"encryption": 2,
“dht-enabled”: false,
"rpc-authentication-required": true,
"rpc-enabled": true,
"rpc-password": "输入你的管理密码",
"rpc-username": "管理你的用户名",
"rpc-whitelist-enabled": false,

更多配置参数,可去 Editing-Configuration-Files探索。

配置好后,保存退出 json 文件,再次输入 systemctl start transmission-daemon.service 启动 Transmission 服务,即可用浏览器打开 web 端(http://域名:9091 或 http://IP 地址:9091),上传种子进行下载。

使用 systemctl enable transmission-daemon 设置服务开机启动。

由于我transmission的下载目录时通过NFS挂载到下载机上,在使用过程中一直出现Permission denied问题,无论如何设置目录权限,都没有解决。后来通过修改transmission-daemon服务运行用户解决:

vim /usr/lib/systemd/system/transmission-daemon.servic

修改Userroot

注意:修改启动用户后,新的配置文件为~/.config/transmission-daemon/settings.json

Web UI 美化界面

Transmission 自带的网页 UI 比较简陋,可以安装 transmission-web-control进行美化:

wget https://github.com/ronggang/transmission-web-control/raw/master/release/install-tr-control.sh --no-check-certificate
sh install-tr-control.sh

制作种子

transmission-create -p -o ./example.torrent -t https://pt.pt-example.com/announce.php -s 4096 ./example.mkv

参数说明:

  • -p 表示这是私用的种子,这个 PT 必须要加上
  • -o 生成的种子输出位置,不要忘记把名字打上
  • -t tracker 服务器地址,自行查询各大站点
  • -s 每个文件块的大小,单位是 KB,设置的 4096,也就是 4M

内网穿透实现Transmission的外网访问

简单来说,要想外网访问家中的transmission,需要路由器通过端口映射的方式访问;由于我家宽带没有外网ip,想在外面访问pt服务只能使用外网穿透的方式,我选择frp来实现。使用内网穿透需要有一台具有外网ip的服务器。

服务端配置

服务器作为公网访问唯一的固定地址,即作为 server 端。内网客户端作为 client 端,会主动向 server 端创建连接,此时再从 server 端反向发送数据即可实现内网穿透。

wget https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz

tar -zxvf frp_0.34.3_linux_amd64.tar.gz

mv frp_0.34.3_linux_amd64 /usr/frp

编辑目录下 frps.ini文件:

[common]
# frp 监听地址
bind_port = 7000

#frp 控制面板
dashboard_port = 7500

# dashboard 用户名密码可选,默认都为 admin
dashboard_user = admin
dashboard_pwd = admin

# transmission内网穿透
[transmission]
type = tcp
listen_port = 9010 
auth_token = 12345678

其他具体配置说明请参考frp中文文档

设置完成后执行

./frps -c frps.ini

客户端配置

客户端只需要多配置所链接的服务器端地址,以及要映射客户端的哪些服务端口。

wget https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz

tar -zxvf frp_0.34.3_linux_amd64.tar.gz

mv frp_0.34.3_linux_amd64 /usr/frp

编辑目录下 frpc.ini文件:

[common]
# 服务器端地址 填自己服务器端的IP地址或者域名
server_addr = X.X.X.X 
# 服务器端口
server_port = 7000 
# 授权token 要与服务器端的SSH密码一致才能映射 这个密码是6000端口的 1个密码可以对一个端口
auth_token = 12345678 
[ssh]
type = tcp
local_ip = 127.0.0.1 
local_port = 22
# 授权token 要与服务器端的transmission密码一致才能映射 这个密码是9091端口的 1个密码可以对一个端口
auth_token = 12345678 

设置完成后执行

./frpc -c frpc.ini

使用服务启动frpc请参考:FRP systemd 启动脚本 FRP systemd init config

参考文章:

Linux | 如何挂 PT:CentOS 7 安装配置美化 Transmission 及制作种子

CentOS 7.0 (Linux)下配置frp进行内网穿透

The post Linux 基于 Transmission 搭建 PT 环境并实现外网访问 appeared first on 无主题博客.

☑️ ☆

Install icu4c version 63 with Homebrew

brew 管理多版本php时, 遇到icu4c版本过高导致php@56无法正常启动, 报错信息:

dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib
  Referenced from: /usr/local/opt/php@5.6/sbin/php-fpm
  Reason: image not found

在stackoverflow找到类似解决方法如下:

把下文中63版本改成这次报错的64版本即可解决

https://stackoverflow.com/questions/55826221/install-icu4c-version-63-with-homebrew

Solution:

1) cd to Homebrew's formula directory

cd $(brew --prefix)/Homebrew/Library/Taps/homebrew/homebrew-core/Formula

2) Find desired commit (version 63 for icu4c) to checkout

git log --follow icu4c.rb

3) Checkout to a new branch

git checkout -b icu4c-63 e7f0f10dc63b1dc1061d475f1a61d01b70ef2cb7

4) Reinstall the library with the new version

brew reinstall ./icu4c.rb

5) Switch to the reinstalled version

brew switch icu4c 63.1

6) Checkout back to master

git checkout master

Sources:

Homebrew install specific version of formula?

http://hanxue-it.blogspot.com/2018/08/macos-homebrew-installing-older-version-of-software.html

Bonus for those who ended up using this more than once:

# zsh
function hiicu63() {
  local last_dir=$(pwd)

  cd $(brew --prefix)/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
  git checkout icu4c-63
  brew reinstall ./icu4c.rb
  brew switch icu4c 63.1
  git checkout master

  cd $last_dir
}

The post Install icu4c version 63 with Homebrew appeared first on 无主题博客.

☑️ ☆

MacOS 利用 Wireshark 抓包保存直播视频

iPhone与macOS建立虚拟端口

终端输入:

rvictl -s <UDID>

ios uuid获取方法

手机连接电脑,通过Finder获取iPhone的UDID,如图:

遇到的问题

1. rvictl: command not found

如果提示 rvictl: command not found 则需要安装(或重新)Xcode 和 Command Line Tools , xcode-select --install

我安装了xcode和 Command Line Tools 但还是提示 rvictl: command not found ,在网上找到一个解决方案

这一步有个小坑,我第一次执行rvictls -s 提示 rvictl: command not found。Stack Overflow上提供了两种解决方法:
xcode没有安装Command Line Tools,执行命令 xcode-select --install 安装一下然后重启终端,对我无效
进入/usr/bin,看有没有rvictls安装。没有的话,进入下面两个目录,安装下两个pkg。
a.Xcode.app/Contents/Resources/Packages/MobileDevice.pkg
b.Xcode.app/Contents/Resources/Packages/MobileDeviceDevelopment.pkg
然后重启下终端,再调用rvictls -s 设备udid就成功了。

2. rvictl starting device failed

是由于苹果安全性提高所致,降低安全性即可。方法适用于 x86, M1 架构

  1. 恢复模式下启动 mac:操作方法
  2. 启动后点按选项 -> 继续
  3. 进入桌面后,点击左上角菜单,选择 terminal, 打开后输入 csrutil disable, 继续输入密码,选择 y 确认, 完成后重启电脑
  4. 至此,重启后 x86 mac 即可以创建虚拟端口了。
  5. M1 还需要打开系统偏好设置 -> 安全性与隐私 -> 发现多出了个选项,点击 允许,会自动重启
  6. 至此, M1 也可以愉快的创建虚拟端口了。

引用自:https://www.jianshu.com/p/9053dd3faed2

Wireshark监听虚拟接口

成功把iPhone与macOS建立虚拟端口后,在Wireshark可以看到rvi0,双击就可以监听了。

手机端进入直播界面。

通常直播流有3种形式,flvm3u8rtmp

rtmp

在Wireshark过滤器输入rtmpt即可过滤出所有rtmp协议的请求信息,这里主要关注connectplay信息,在connect中可以找到协议地址;在play中可以找到推流地址;把两个地址拼接后,可以用ffmpeg保存直播流:

ffmpeg -i 'rtmp://url/live/xxx' -c copy -f mp4 xxx.mp4

一般情况rtmpt的协议地址是不变的,所以获取到第一个connect信息后,可以将过滤信息修改为rtmpt.ucm.eventtype

m3u8

在Wireshark过滤器中输入http contains ".m3u8"即可过滤出所有以.m3u8的请求信息,找到完整的.m3u8地址后,可以使用ffmpeg保存直播流:

ffmpeg -i 'http://url/xxx.m3u8' -c copy xxx.mp4

flv

这种情况暂时还没有遇到,待补充。。

The post MacOS 利用 Wireshark 抓包保存直播视频 appeared first on 无主题博客.

☑️ ☆

MacOS Catalina Python 意外退出解决

$ brew update && brew upgrade && brew install openssl

$ cd /usr/local/Cellar/openssl/1.0.2t/lib

$ sudo cp libssl.1.0.0.dylib libcrypto.1.0.0.dylib /usr/local/lib/

$ cd /usr/local/lib

$ mv libssl.dylib libssl_bak.dylib

$ mv libcrypto.dylib libcrypto_bak.dylib

$ sudo ln -s libssl.1.0.0.dylib libssl.dylib

$ sudo ln -s libcrypto.1.0.0.dylib libcrypto.dylib
 ```

The post MacOS Catalina Python 意外退出解决 appeared first on 无主题博客.

❌