linux-统计目录下 指定类型文件大小

统计指定文件大小

find . -type f -iname "*.cr2" -exec du -ch {} +  | tail -n1
find . -type f -iname "*.mp4" -exec du -ch {} + | tail -n1

找出非指定文件类型的文件

 find .  -type f -not -iname "*.jpg" -not -iname "*.jpeg" -not -iname "*.mp4" -not -iname "*.cr2"  -not -iname "*.mov"

找出指定大小的文件

 find . -type f -size +102400

 

 

 

nas中各种协议的性能对比-smb-nfs-webdav

核心特性对比

特性SMB/CIFSWebDAVNFS
主导平台Windows跨平台/WebUNIX/Linux
权限控制ACLs/NTFS基础ACLUNIX权限/NFSv4 ACL
文件锁完善基本完善
符号链接支持有限原生支持
传输加密SMB3+ (AES)HTTPSNFSv4+ (Kerberos)
多通道传输SMB3支持不支持NFSv4.2支持
远程访问便利性需VPN/端口HTTP(S)直接访问需VPN/防火墙配置

性能与效率

  1. 局域网性能‌:

    • NFS‌:在Linux/Unix环境中性能最优,尤其是大文件连续读写。无状态设计减少开销。
    • SMB‌:现代SMB3(尤其是3.1.1)在Windows和跨平台接近NFS,小文件性能优于NFS。
    • WebDAV‌:HTTP协议开销大,性能最低(比SMB/NFS慢20-50%)。
  2. 小文件操作‌:

    • SMB在Windows上缓存优化更好,大量小文件传输占优。
    • NFS依赖配置(如async写入),需调优才能匹配SMB。
  3. 大文件传输‌:

    • NFS通常领先(协议开销低),SMB3多通道可聚合带宽。
    • WebDAV受HTTPS加密拖累,速度明显下降。
  4. 高并发场景‌:

    • NFS无状态设计更适合高并发读(如虚拟机集群)。
    • SMB3支持目录租约(Directory Leasing),减少重复查询。

稳定性与兼容性

  • SMB‌:
    • 最佳Windows集成‌,但早期版本(SMB1)有漏洞(如永恒之蓝),‌务必禁用‌。
    • macOS/Linux通过Samba支持良好,跨平台共享首选。
  • NFS‌:
    • Linux/Unix环境最稳定‌,Windows需安装NFS客户端(功能受限)。
    • 版本兼容问题常见(建议用NFSv4)。
  • WebDAV‌:
    • 依赖Web服务器(如Apache/Nginx),配置不当易崩溃。
    • 移动端兼容性最佳(可直接播放视频/文档)。

总结

  • 功能最全‌:‌SMB‌(ACL、锁、跨平台)。
  • 性能最高‌:‌NFS‌(Linux环境)、‌SMB3‌(Windows/跨平台)。
  • 最易远程访问‌:‌WebDAV‌(HTTP便利性)。
  • 最稳定‌:‌NFS‌(企业级场景)、‌SMB‌(主流OS深度集成)。

⚠️ ‌关键提醒‌:协议性能受实现质量影响极大(如Samba vs Windows SMB),实际部署前建议用iperf+fio测试您的环境。若是家庭用户,SMB通常是最省心的选择;若是纯Linux环境,NFS性能更优;若需随时从外网访问手机相册,WebDAV更方便。

docker 安装及日常使用命令手册

Docker 官网介绍
https://docs.docker.com/

1. 基础环境Alpine
https://alpinelinux.org/downloads/
参考:alpine linux ,Small. Simple. Secure.
为啥选 alpine? 轻量级,快速,安全
体积小,速度快,这是重点
下表是官方镜像的大小比较:

REPOSITORY TAG IMAGE ID VIRTUAL SIZE
alpine latest 4e38e38c8ce0 4.799 MB
debian latest 4d6ce913b130 84.98 MB
ubuntu latest b39b81afc8ca 188.3 MB
centos latest 8efe422e6104 210 MB

2. 在Alpine 中安装Docker
取消第三行 community 源注释
vi /etc/apk/repositories

#/media/cdrom/apks
http://mirrors.sjtug.sjtu.edu.cn/alpine/v3.14/main
http://mirrors.sjtug.sjtu.edu.cn/alpine/v3.14/community
#http://mirrors.sjtug.sjtu.edu.cn/alpine/edge/main
#http://mirrors.sjtug.sjtu.edu.cn/alpine/edge/community
#http://mirrors.sjtug.sjtu.edu.cn/alpine/edge/testing
#参考更新镜像源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
sed -i 's/mirrors.sjtug.sjtu.edu.cn/mirrors.ustc.edu.cn/g' /etc/apk/repositories

安装并设置docker服务默认启动

apk update
apk add docker
rc-update add docker boot
service docker start
docker version

 

3. 优化docker
国内的 Docker Hub 镜像加速器
参考 https://gist.github.com/y0ngb1n/7e8f16af3242c7815e7ca2f0833d3ea6
参考 https://docs.docker.com/registry/recipes/mirror/
http://mirrors.ustc.edu.cn/help/dockerhub.html
docker config ls
docker info

创建或更新 /etc/docker/daemon.json

{"registry-mirrors": [   
"http://mirror.azure.cn",
"http://mirrors.ustc.edu.cn",
"https://666860.xyz",
"https://a.ussh.net",
"https://docker-0.unsee.tech",
"https://docker-mirror.aigc2d.com",
"https://docker-registry.nmqu.com",
"https://docker.1ms.run",
"https://docker.1panel.live",
"https://docker.1panel.top",
"https://docker.367231.xyz",
"https://docker.amingg.com",
"https://docker.apiba.cn",
"https://docker.hlmirror.com",
"https://docker.jsdelivr.fyi",
"https://docker.kejilion.pro",
"https://docker.ketches.cn",
"https://docker.m.daocloud.io",
"https://docker.xiaogenban1993.com",
"https://docker.xuanyuan.me",
"https://docker.yomansunter.com",
"https://dockercf.jsdelivr.fyi",
"https://dockerhub.icu",
"https://dockerproxy.net",
"https://dockerpull.cn",
"https://dockerpull.org",
"https://dockerpull.pw",
"https://dockertest.jsdelivr.fyi",
"https://dytt.online",
"https://hub3.nat.tf",
"https://hub-mirror.c.163.com",
"https://hub.1panel.dev",
"https://hub.amingg.com",
"https://hub.littlediary.cn",
"https://hub.rat.dev",
"https://hub.rat.dev",
"https://hubp.me",
"https://image.cloudlayer.icu",
"https://lispy.org",
"https://mirror.baidubce.com",
"https://proxy.1panel.live"

] ,"ipv6": false}

重启 docker 服务
service docker restart
再查看下配置

docker config ls
docker info

看到最后出来

 Registry Mirrors:
  https://hub-mirror.c.163.com/
  https://mirror.baidubce.com/

============
官方镜像搜索,https://hub.docker.com/
docker web ui 管理

# portainer, 多一些管理功能,首次使用设置初始密码,然后选择Local 即可
docker run -d -p 9001:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name docker-prtainer portainer/portainer

# docker-ui 这个没有访问限制,建议限于本地开发使用,http://{对应IP地址}:9002 即可打开(可选参考)
docker run -d -p 9002:9000 –restart=always -v /var/run/docker.sock:/var/run/docker.sock –name docker-web docker.io/uifd/ui-for-docker

============
#常用命令
# 停止所有容器
docker stop $(docker ps -aq)

#查询运行中容器
docker ps

# 设置自动启动
docker update –restart=always xxx-name
docker update –restart=on-failure:10 xxx-name

#因为容器的ID是随机码,而容器的名字又是看似无意义的命名,我们可以使用命令
docker rename old_name new_name

#给这个容器命名。这样以后,我们再次启动或停止容器时,就可以直接使用这个名字。
docker [stop] [start] new_name

#而要显示出所有容器,包括没有启动的,可以使用命令
docker ps -a

#++++++++++++++++++++++++++
docker 启动后进入交互终端
方法A

docker exec -it CONTAINER_ID bash 
游戏
docker exec -it CONTAINER_ID bash 

方法B: docker attach ()

docker attach [OPTIONS] CONTAINER_ID

# 这个方式需要注意退出时用 Ctrl+z 会导致 docker 进程关闭退出
# 可以使用 Ctrl+q,Ctrl,p  退出不结束(连续按Ctrl+q和Ctrl+p)

#++++++++++++++++++++++++++
#修改容器映射端口
1、停止容器(docker stop xxxxxxxxx )
2、停止docker服务(systemctl stop docker)
3、修改这个容器的hostconfig.json文件中的端口(/var/lib/docker/containers/xxxxxxxxx 目录下相关文件 ,比如config.v2.json )
4、启动docker服务(systemctl start docker)
5、启动容器(docker start xxxxxxxxx )

cd /var/lib/docker/containers/xxxxxxxxx
#这里是CONTAINER ID
vim hostconfig.json
如果之前没有端口映射, 应该有这样的一段:
“PortBindings”:{}
增加一个映射, 这样写:
“PortBindings”:{“8080/tcp”:[{“HostIp”:””,”HostPort”:”60000″}]}
前一个数字是容器端口, 后一个是宿主机端口。将宿主机的60000端口映射到容器的8080端口
而修改现有端口映射更简单, 把端口号改掉就行。
注:我原来的容器中只有22的对外访问,现在想在容器中部署一个springboot项目,端口为8091,则修改如下:
“PortBindings”:{“22/tcp”:[{“HostIp”:””,”HostPort”:”10022″}],”8091/tcp”:[{“HostIp”:””,”HostPort”:”8000″}]}

#方法B
1、获得容器IP,将container_name 换成实际环境中的容器名
docker inspect container_name_xxxxxxxxx | grep IPAddress
2、iptable转发端口
将宿主机的60000端口映射到容器的8080端口
iptables -t nat -A DOCKER -p tcp –dport 60000 -j DNAT –to-destination 172.17.0.2:8080

#方法C
#先停止容器
docker stop containerA
#将容器commit成为一个镜像
docker commit containerA newImageB
#运行容器
docker run -p 8080:8080 -p 8081:8081 -v /home/data/:/home/data/ -dt newImageB

参考:
https://www.runoob.com/docker/debian-docker-install.html
Debian 安装 Docker

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
curl -sSL https://get.daocloud.io/docker | sh
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io

alpine-linux-kiosk

echo -e "#!/bin/sh\nopenbox-session &\nfirefox -kiosk https://www.bing.com" > ~/.xinitrc && chmod +x ~/.xinitrc

setup-xorg-base && apk add openbox font-noto-cjk firefox

[可选] 为 Firefox 创建策略配置, 禁止用户访问开发者工具(F12)

echo ‘{“policies”: {“DisableDeveloperTools”: true}}’ | tee /usr/lib/firefox/distribution/policies.json

# 注意以 root 身份下执行

# 添加 agetty 包
apk add agetty

# 编辑配置文件
vi /etc/inittab
#将 tty1 开头的行注释掉, 插入下面内容:

tty1::respawn:/sbin/agetty –autologin lpwm –noclear tty1 linux
参考文档: TTY Autologin

RaiDrive

RaiDrive可以把网盘挂载到电脑本地,使我们能像操作C盘、D盘等电脑本地磁盘那样,直接在本地操作网盘文件。比如,可以在本地直接对网盘中的文件进行复制,粘贴,重命名等操作。如同给我们的电脑硬盘扩容了,理论上只要您添加的网盘足够多容量或者足够大,相当于给电脑添加了一块“无限”容量的网络硬盘。

若是搭配 Everything 搜索软件,还可以在电脑中快速搜索网盘文件。此外,如果已经搭建并使用了alist,raidrive挂载alist后(WebDAV挂载),则可间接实现一键挂载阿里云盘、百度网盘、onedrive、天翼云盘、123云盘、中国移动云盘等诸多网盘。

不过,RaiDrive的新版本分为免费版和Pro版,而免费版有功能限制(比如限制大文件传输等),并且偶尔会出现广告。而由于RaiDrive起初是全免费软件,故而一些早期的旧版本反而没有这些功能限制且天然去广告了。

本次分享的是RaiDrive的历史版本,也就是早期的一些老版本。具体包含所谓的最后一个全功能版本 RaiDrive 1.5.3.1(不过也有说2019.12.22那个是最后一个完全免费版本),还有raidrive 1.8.0等等,基本上涵盖了raidrive 1.6.2.416 到 2019.12.22 的所有旧版本。

软件下载

https://pan.quark.cn/s/33f5ef3233ba

https://www.123pan.com/s/hieA-qsgxH.html

https://url26.ctfile.com/d/948726-56175567-da8e0e?p=7890 (访问密码: 7890)

===
https://raidrive.mrdownload.com/en/for-windows/app/download/7266
2020.6.25
OpenBoxLab
====
Raidrive新手+拓展教程
https://blog.csdn.net/EricZCY/article/details/106720431
https://wws.lanzous.com/iLfRMdlbbub

https://production-downloads-webserver.storage.googleapis.com/softwares/29efabd1-4006-4e2c-9a74-c5b81dad13c7/raidrive-2020-6-25.exe?AWSAccessKeyId=GOOG1EMFSX4KQJNU4T4R4BCA2WP4NEBACPV7PBW7ACQN55XEWDJUEEZVM63TI&Expires=1749032405&Signature=FvYRuKYOPpoZbUfn7gB2bkQ3oDI%3D