2020-07-02

linux-clamav

1. clamav
 1.1 安装-更新-启用-测试
 1.2 扫描
 1.3 clamscan --help
2. Rkhunter
 2.1 安装-更新
 2.2 系统检查-验证配置文件
 2.3 配置文件,日志文件
 2.4 rkhunter --help
3. See Also

1. clamav

1.1 安装-更新-启用-测试

https://wiki.archlinux.org/index.php/ClamAV
https://www.clamav.net/
安装
$ sudo pacman -S clamav
使用以下命令更新病毒定义
$ sudo freshclam
数据库文件保存在:
/var/lib/clamav/daily.cvd
/var/lib/clamav/main.cvd
/var/lib/clamav/bytecode.cvd

启动/启用自动更新病毒库服务: clamav-freshclam.service
$ sudo systemctl enable clamav-freshclam.service
$ sudo systemctl start clamav-freshclam.service
注意:您将需要freshclam在首次启动服务之前运行,否则将遇到麻烦/错误,这将导致ClamAV无法正确启动。
该服务称为clamav-daemon.service。启动它,并使其在启动时启动。
$ sudo systemctl enable clamav-daemon.service
$ sudo systemctl start clamav-daemon.service

为了确保正确安装ClamAV和定义,请使用clamscan 扫描EICAR测试文件(无病毒代码的无害签名)。http://2016.eicar.org/86-0-Intended-use.html
$ curl https://secure.eicar.org/eicar.com.txt |clamscan -
输出必须包括:
stdin: Win.Test.EICAR_HDB-1 FOUND

1.2 扫描

clamscan 可用于扫描某些文件,主目录或整个系统:
$ clamscan myfile
$ clamscan --recursive --infected /home
$ sudo clamscan --recursive --infected --exclude-dir='^/sys|^/dev' /
如果您想clamscan删除受感染的文件,请在命令中添加该--remove选项,也可以使用--move=/dir将其隔离。
您可能还想clamscan扫描更大的文件。在这种情况下,请将选项--max-filesize=4000M和附加--max-scansize=4000M到命令中。“ 4000M”是最大可能值,可以根据需要降低。
使用该-l /path/to/file选项会将clamscan日志打印到文本文件中,以查找报告的感染。

-r递归扫描子目录; -o跳过打印OK的文件名; /home扫描home目录; -l输出日志文件
$ clamscan -r -o /home -l /home/toma/cl7-0628.log
----------- SCAN SUMMARY -----------
Known viruses: 7429542
Engine version: 0.102.3
Scanned directories: 4399
Scanned files: 29483
Infected files: 1
Total errors: 5
Data scanned: 1767.17 MB
Data read: 1201.42 MB (ratio 1.47:1)
Time: 729.874 sec (12 m 9 s)

--exclude-dir 排除一些虚目录
$ sudo clamscan -r -o --exclude-dir='^/sys|^/dev|^/mnt|^/home' / -l /home/toma/cl6-0628.log

1.3 clamscan --help

$ clamscan --helpclamscan [options] [file/directory/-]cn
--help -hShow this help显示此帮助
--version -VPrint version number打印版本号
--verbose -vBe verbose冗长
--archive-verbose -aShow filenames inside scanned archives在扫描的档案中显示文件名
--debugEnable libclamav's debug messages启用libclamav的调试消息
--quietOnly output error messages仅输出错误消息
--stdoutWrite to stdout instead of stderr. Does not affect 'debug' messages.写到stdout而不是stderr。不影响“调试”消息。
--no-summaryDisable summary at end of scanning扫描结束时禁用摘要
--infected -iOnly print infected files仅打印受感染的文件
--suppress-ok-results -oSkip printing OK files跳过打印OK文件
--bellSound bell on virus detection检测病毒的声音
--tempdir=DIRECTORYCreate temporary files in DIRECTORY在目录中创建临时文件
--leave-temps[=yes/no(*)]Do not remove temporary files不要删除临时文件
--gen-json[=yes/no(*)]Generate JSON description of scanned file(s). JSON will be printed and alsodropped to the temp directory if --leave-temps is enabled.生成扫描文件的JSON描述。如果启用--leave-temps,则将打印JSON并将其拖放到temp目录中。
--database=FILE/DIR -d FILE/DIRLoad virus database from FILE or load all supported db files from DIR从FILE加载病毒数据库或从DIR加载所有受支持的数据库文件
--official-db-only[=yes/no(*)]Only load official signatures仅加载官方签名
--log=FILE -l FILESave scan report to FILE将扫描报告保存到FILE
--recursive[=yes/no(*)] -rScan subdirectories recursively递归扫描子目录
--allmatch[=yes/no(*)] -zContinue scanning within file after finding a match找到匹配项后继续在文件中扫描
--cross-fs[=yes(*)/no]Scan files and directories on other filesystems扫描其他文件系统上的文件和目录
--follow-dir-symlinks[=0/1(*)/2]Follow directory symlinks (0 = never, 1 = direct, 2 = always)遵循目录符号链接(0 =永不,1 =直接,2 =始终)
--follow-file-symlinks[=0/1(*)/2]Follow file symlinks (0 = never, 1 = direct, 2 = always)跟随文件符号链接(0 =从不,1 =直接,2 =始终)
--file-list=FILE -f FILEScan files from FILE从FILE扫描文件
--remove[=yes/no(*)]Remove infected files. Be careful!删除受感染的文件。小心!
--move=DIRECTORYMove infected files into DIRECTORY将受感染的文件移至目录
--copy=DIRECTORYCopy infected files into DIRECTORY将受感染的文件复制到目录中
--exclude=REGEXDon't scan file names matching REGEX不要扫描与REGEX匹配的文件名
--exclude-dir=REGEXDon't scan directories matching REGEX不要扫描与REGEX匹配的目录
--include=REGEXOnly scan file names matching REGEX仅扫描与REGEX匹配的文件名
--include-dir=REGEXOnly scan directories matching REGEX仅扫描与REGEX匹配的目录
--bytecode[=yes(*)/no]Load bytecode from the database从数据库加载字节码
--bytecode-unsigned[=yes/no(*)]Load unsigned bytecode加载无符号字节码
--bytecode-timeout=NSet bytecode timeout (in milliseconds)设置字节码超时(以毫秒为单位)
--statistics[=none(*)/bytecode/pcre]Collect and print execution statistics收集并打印执行统计信息
--detect-pua[=yes/no(*)]Detect Possibly Unwanted Applications检测可能有害的应用程序
--exclude-pua=CATSkip PUA sigs of category CAT跳过类别CAT的PUA信号
--include-pua=CATLoad PUA sigs of category CAT加载类别为CAT的PUA信号
--detect-structured[=yes/no(*)]Detect structured data (SSN, Credit Card)检测结构化数据(SSN,信用卡)
--structured-ssn-format=XSSN format (0=normal,1=stripped,2=both)SSN格式(0 =正常,1 =剥离,2 =两者)
--structured-ssn-count=NMin SSN count to generate a detect最小SSN计数以生成检测
--structured-cc-count=NMin CC count to generate a detect最小CC计数以生成检测
--scan-mail[=yes(*)/no]Scan mail files扫描邮件文件
--phishing-sigs[=yes(*)/no]Enable email signature-based phishing detection启用基于电子邮件签名的网络钓鱼检测
--phishing-scan-urls[=yes(*)/no]Enable URL signature-based phishing detection启用基于URL签名的网络钓鱼检测
--heuristic-alerts[=yes(*)/no]Heuristic alerts启发式警报
--heuristic-scan-precedence[=yes/no(*)]Stop scanning as soon as a heuristic match is found找到启发式匹配项后立即停止扫描
--normalize[=yes(*)/no]Normalize html, script, and text files. Use normalize=no for yara compatibility规范化html,脚本和文本文件。使用normalize = no获得yara兼容性
--scan-pe[=yes(*)/no]Scan PE files扫描PE文件
--scan-elf[=yes(*)/no]Scan ELF files扫描ELF文件
--scan-ole2[=yes(*)/no]Scan OLE2 containers扫描OLE2容器
--scan-pdf[=yes(*)/no]Scan PDF files扫描PDF文件
--scan-swf[=yes(*)/no]Scan SWF files扫描SWF文件
--scan-html[=yes(*)/no]Scan HTML files扫描HTML文件
--scan-xmldocs[=yes(*)/no]Scan xml-based document files扫描基于xml的文档文件
--scan-hwp3[=yes(*)/no]Scan HWP3 files扫描HWP3文件
--scan-archive[=yes(*)/no]Scan archive files (supported by libclamav)扫描存档文件(libclamav支持)
--alert-broken[=yes/no(*)]Alert on broken executable files (PE & ELF)警报损坏的可执行文件(PE和ELF)
--alert-encrypted[=yes/no(*)]Alert on encrypted archives and documents提醒加密的档案和文件
--alert-encrypted-archive[=yes/no(*)]Alert on encrypted archives警报加密档案
--alert-encrypted-doc[=yes/no(*)]Alert on encrypted documents加密文件警报
--alert-macros[=yes/no(*)]Alert on OLE2 files containing VBA macros对包含VBA宏的OLE2文件发出警报
--alert-exceeds-max[=yes/no(*)]Alert on files that exceed max file size, max scan size, or max recursion limit对超过最大文件大小,最大扫描大小或最大递归限制的文件发出警报
--alert-phishing-ssl[=yes/no(*)]Alert on emails containing SSL mismatches in URLs在URL中包含SSL不匹配的电子邮件时发出警报
--alert-phishing-cloak[=yes/no(*)]Alert on emails containing cloaked URLs对包含隐藏URL的电子邮件发出警报
--alert-partition-intersection[=yes/no(*)]Alert on raw DMG image files containing partition intersections对包含分区相交的原始DMG图像文件发出警报
--nocertsDisable authenticode certificate chain verification in PE files禁用PE文件中的Authenticode证书链验证
--dumpcertsDump authenticode certificate chain in PE files在PE文件中转储Authenticode证书链
--max-scantime=#nScan time longer than this will be skipped and assumed clean扫描时间长于此时间将被忽略并认为是干净的
--max-filesize=#nFiles larger than this will be skipped and assumed clean大于此大小的文件将被跳过并假定为干净文件
--max-scansize=#nThe maximum amount of data to scan for each container file (**)每个容器文件要扫描的最大数据量(**)
--max-files=#nThe maximum number of files to scan for each container file (**)每个容器文件要扫描的最大文件数(**)
--max-recursion=#nMaximum archive recursion level for container file (**)容器文件的最大归档递归级别(**)
--max-dir-recursion=#nMaximum directory recursion level最大目录递归级别
--max-embeddedpe=#nMaximum size file to check for embedded PE检查嵌入式PE的最大大小文件
--max-htmlnormalize=#nMaximum size of HTML file to normalize要规范化的HTML文件的最大大小
--max-htmlnotags=#nMaximum size of normalized HTML file to scan要扫描的规范化HTML文件的最大大小
--max-scriptnormalize=#nMaximum size of script file to normalize要规范化的脚本文件的最大大小
--max-ziptypercg=#nMaximum size zip to type reanalyze邮编的最大大小可重新分析
--max-partitions=#nMaximum number of partitions in disk image to be scanned磁盘映像中要扫描的最大分区数
--max-iconspe=#nMaximum number of icons in PE file to be scannedPE文件中要扫描的最大图标数
--max-rechwp3=#nMaximum recursive calls to HWP3 parsing function对HWP3解析函数的最大递归调用
--pcre-match-limit=#nMaximum calls to the PCRE match function.最多调用PCRE匹配功能。
--pcre-recmatch-limit=#nMaximum recursive calls to the PCRE match function.对PCRE匹配函数的最大递归调用。
--pcre-max-filesize=#nMaximum size file to perform PCRE subsig matching.执行PCRE subsig匹配的最大文件大小。
--disable-cacheDisable caching and cache checks for hash sums of scanned files.禁用对扫描文件的哈希和进行缓存和缓存检查。

Pass in - as the filename for stdin.传入-作为stdin的文件名。

(*) Default scan settings(*)默认扫描设置

(**) Certain files (e.g. documents, archives, etc.) may in turn contain other files inside. The above options ensure safe processing of this kind of data.(**)某些文件(例如文档,档案等)可能反过来在其中包含其他文件。以上选项可确保安全处理此类数据。

2. Rkhunter

2.1 安装-更新

http://rkhunter.sourceforge.net/
https://sourceforge.net/p/rkhunter/rkh_code/ci/master/tree/files/README
https://wiki.archlinux.org/index.php/Rkhunter
安装
$ sudo pacman -Ss rkhunter
首次更新文件属性数据库:
$ sudo rkhunter --propupd

2.2 系统检查-验证配置文件

运行系统检查:
$ sudo rkhunter --check
... 内容较多, 以下为统计信息
[ Found ]    5 
[ None found ] 13 
[ Not found ] 1189 
[ OK ]       246 
[ Skipped ]  6 
[ Warning ]  14 
Suspect files: 4
Possible rootkits: 7

验证配置文件:
$ sudo rkhunter --config-check

2.3 配置文件,日志文件

主配置文件位于/etc/rkhunter.conf。
默认情况下,上次系统检查的日志将放置在/var/log/rkhunter.log。
误报, 开箱即用,Rootkit Hunter在检查文件属性时将抛出一些错误警告。这是因为,一些核心实用程序已被脚本替换。这些警告可以通过白名单静音。
/etc/rkhunter.conf
SCRIPTWHITELIST=/usr/bin/egrep
SCRIPTWHITELIST=/usr/bin/fgrep
SCRIPTWHITELIST=/usr/bin/ldd

2.4 rkhunter --help

$ sudo rkhunter --helpUsage: rkhunter {--check | --unlock | --update | --versioncheck |

--propupd [{filename | directory | package name},...] |

--list [{tests | {lang | languages} | rootkits | perl | propfiles}] |

--config-check | --version | --help} [options]
Current options are:

--append-logAppend to the logfile, do not overwrite追加到日志文件,请勿覆盖
--bindir <directory>...Use the specified command directories使用指定的命令目录
-c, --checkCheck the local system检查本地系统
-C, --config-checkCheck the configuration file(s), then exit检查配置文件,然后退出
--cs2, --color-set2Use the second color set for output使用第二种颜色设置进行输出
--configfile <file>Use the specified configuration file使用指定的配置文件
--cronjobRun as a cron job作为cron工作运行

(implies -c, --sk and --nocolors options)(意味着-c,-sk和--nocolors选项)
--dbdir <directory>Use the specified database directory使用指定的数据库目录
--debugDebug mode调试模式

(Do not use unless asked to do so)(除非有要求,否则请勿使用)
--disable <test>[,<test>...]Disable specific tests禁用特定测试

(Default is to disable no tests)(默认为禁用任何测试)
--display-logfileDisplay the logfile at the end在末尾显示日志文件
--enable <test>[,<test>...]Enable specific tests启用特定测试

(Default is to enable all tests)(默认为启用所有测试)
--hash {MD5 | SHA1 | SHA224 |SHA256 | SHA384 | SHA512 |SHA256 | SHA3​​84 | SHA512 |
NONE | <command>}Use the specified file hash function使用指定的文件哈希函数

(Default is SHA256)(默认为SHA256)
-h, --helpDisplay this help menu, then exit显示此帮助菜单,然后退出
--lang, --language <language>Specify the language to use指定要使用的语言

(Default is English)(默认为英语)
--list [tests | languages |
rootkits | perl | propfiles]
List the available test names, languages, rootkit names, perl module status or file properties database, then exit列出可用的测试名称,语言,rootkit名称,perl模块状态或文件属性数据库,然后退出
-l, --logfile [file]Write to a logfile写入日志文件

(Default is /var/log/rkhunter.log)(默认值为/var/log/rkhunter.log)
--noappend-logDo not append to the logfile, overwrite it不要追加到日志文件中,将其覆盖
--nocfDo not use the configuration file entries for disabled tests (only valid with --disable)不要将配置文件条目用于禁用的测试(仅对--disable有效)
--nocolorsUse black and white output使用黑白输出
--nologDo not write to a logfile不要写入日志文件
--nomow, --no-mail-on-warningDo not send a message if warnings occur如果发生警告,请勿发送消息
--ns, --nosummaryDo not show the summary of check results不显示检查结果摘要
--novl, --no-verbose-loggingNo verbose logging没有详细的日志记录
--pkgmgr {RPM | DPKG | BSD |
BSDng | SOLARIS |
Use the specified package manager to obtain or verify file property values.使用指定的程序包管理器来获取或验证文件属性值。
NONE}(Default is NONE)(默认为无)
--propupd [file | directory |
package]...
Update the entire file properties database, or just for the specified entries更新整个文件属性数据库,或仅更新指定的条目
-q, --quietQuiet mode (no output at all)安静模式(完全没有输出)
--rwo, --report-warnings-onlyShow only warning messages仅显示警告消息
--sk, --skip-keypressDon't wait for a keypress after each test每次测试后不要等待按键
--summaryShow the summary of system check results显示系统检查结果摘要

(This is the default)(这是默认设置)
--syslog [facility.priority]Log the check start and finish times to syslog将检查开始和完成时间记录到syslog

(Default level is authpriv.notice)(默认级别为authpriv.notice)
--tmpdir <directory>Use the specified temporary directory使用指定的临时目录
--unlockUnlock (remove) the lock file解锁(删除)锁定文件
--updateCheck for updates to database files检查数据库文件的更新
--vl, --verbose-loggingUse verbose logging (on by default)使用详细日志记录(默认情况下处于启用状态)
-V, --versionDisplay the version number, then exit显示版本号,然后退出
--versioncheckCheck for latest version of program检查程序的最新版本
-x, --autoxAutomatically detect if X is in use自动检测是否正在使用X
-X, --no-autoxDo not automatically detect if X is in use不自动检测是否正在使用X

$ sudo rkhunter --update
[ Rootkit Hunter version 1.4.6 ]
Checking rkhunter data files...
  Checking file mirrors.dat                                  [ Update failed ]
  Checking file programs_bad.dat                             [ Update failed ]
  Checking file backdoorports.dat                            [ Update failed ]
  Checking file suspscan.dat                                 [ No update ]
  Checking file i18n versions                                [ Update failed ]
Please check the log file (/var/log/rkhunter.log)
USER COMMAND
toma  \_ fish
root  |   \_ sudo rkhunter --update
root  |       \_ /bin/sh /usr/bin/rkhunter --update
root  |           \_ /usr/bin/wget -q -O /var/lib/rkhunter/tmp/rkhunter.upd.oEZ3bq3xu5 http://rkhunter.sourceforge.net/1.4/programs_bad.dat
root  |           \_ /usr/bin/wget -q -O /var/lib/rkhunter/tmp/rkhunter.upd.oEZ3bq3xu5 http://rkhunter.sourceforge.net/1.4/backdoorports.dat
root  |           \_ /usr/bin/wget -q -O /var/lib/rkhunter/tmp/rkhunter.upd.oEZ3bq3xu5 http://rkhunter.sourceforge.net/1.4/suspscan.dat
root  |           \_ /usr/bin/wget -q -O /var/lib/rkhunter/tmp/rkhunter.upd.oEZ3bq3xu5 http://rkhunter.sourceforge.net/1.4/i18n/1.4.6/i18n.ver

3. See Also

Linux系统安全笔记 发表于 2019-01-02 osoft
https://www.cnblogs.com/sztom/p/10211554.html
https://www.clamav.net/downloads
https://github.com/Cisco-Talos/clamav-devel
https://en.wikipedia.org/wiki/Clam_AntiVirus
https://en.wikipedia.org/wiki/List_of_antivirus_software
https://en.wikipedia.org/wiki/Comparison_of_antivirus_software
https://en.wikipedia.org/wiki/Comparison_of_firewalls

linux-clean

1. 清理文件系统工具
 1.1 Disk usage display
 1.2 Disk cleaning
2. 软件包清理
 2.1 Package cache 包缓存
 2.2 Unused packages (orphans) 孤儿包
 2.3 Pacman包管理器的使用参考
3. (借助1.2 Disk cleaning的工具)
 3.1 Old configuration files
 3.2 Broken symlinks
 3.3 使用BleachBit清理Home目录
4. 多语言
5. pkglist

1. 清理文件系统工具

https://wiki.archlinux.org/index.php/System_maintenance#Clean_the_filesystem
在寻找要删除的文件时,重要的是找到占用磁盘空间最多的文件。可以在以下位置找到有助于此目的的程序:

1.1 Disk usage display

应用程序列表#磁盘使用情况显示。https://wiki.archlinux.org/index.php/List_of_applications#Disk_usage_display

1.2 Disk cleaning

应用程序列表#磁盘清洁。https://wiki.archlinux.org/index.php/List_of_applications#Disk_cleaning

2. 软件包清理

2.1 Package cache 包缓存

https://wiki.archlinux.org/index.php/System_maintenance#Package_cache
Remove unwanted .pkg files from /var/cache/pacman/pkg/ to free up disk space.
See Pacman#Cleaning the package cache for more information.
https://wiki.archlinux.org/index.php/Pacman#Cleaning_the_package_cache
$ sudo paccache -rk1
$ sudo pacman -Sc

2.2 Unused packages (orphans) 孤儿包

Remove unused packages from the system to free up disk space and simplify maintenance.
See Pacman/Tips and tricks#Removing unused packages (orphans) for details.
https://wiki.archlinux.org/index.php/Pacman/Tips_and_tricks#Removing_unused_packages_(orphans)
$ sudo pacman -Qqdt | sudo pacman -Rs -
$ sudo pacman -Rns $(pacman -Qtdq)

2.3 Pacman包管理器的使用参考

pacman-help; Arch-pacman-Tips-And-Tricks; Arch Linux 软件包的查询及清理; archlinux-pacdiff

3. (借助1.2 Disk cleaning的工具)

3.1 Old configuration files

https://wiki.archlinux.org/index.php/System_maintenance#Old_configuration_files
旧的配置文件可能与较新的软件版本冲突,或者随着时间的推移而损坏。定期删除不需要的配置,尤其是在主文件夹和中~/.config。出于类似原因,在安装之间共享主文件夹时要小心。
查找以下文件夹:
~/.config/ -应用程序存储其配置的位置
~/.cache/ -某些程序的缓存大小可能会增加
~/.local/share/ -旧文件可能躺在那里
有关更多信息,请参见XDG基本目录支持。https://wiki.archlinux.org/index.php/XDG_Base_Directory_support
为了使主目录免受在错误位置创建的临时文件的影响,最好管理一系列不需要的文件并定期删除它们,例如,使用rmshit.py。
rmlint可用于查找并有选择地删除重复文件,空文件,递归空目录和损坏的符号链接。

3.2 Broken symlinks

https://wiki.archlinux.org/index.php/System_maintenance#Broken_symlinks
旧的断开的符号链接可能位于您的系统中。您应该删除它们。可以在以下链接找到实现此目标的示例。但是,您不应盲目删除所有断开的符号链接,因为其中某些符号链接可以达到目的。
https://unix.stackexchange.com/questions/34248/how-can-i-find-broken-symlinks
http://www.commandlinefu.com/commands/view/8260/find-broken-symlinks
要快速列出系统中所有损坏的符号链接,请使用:
  $ sudo find / -xtype l -print
然后检查并从该列表中删除不必要的条目。

3.3 使用BleachBit清理Home目录

  1. 打开BleachBit, 左侧勾选需要清理的项目;
  2. 点击上方[Preview]预览, 程序会扫描相关目录并列出认为可以删除的文件列表;
  3. 通过滚动条浏览没有问题, 就可以点击上方的[Clean]清理这些文件了.
注: 第一次使用, 建议不要全选, 逐个选择项目,扫描出的文件列表不会太长, 方便勘查. > [Preview]预览 > [Clean]清理

4. 多语言

https://wiki.archlinux.org/index.php/Pacman/Tips_and_tricks#Installing_only_content_in_required_languages
仅安装所需语言的内容
许多软件包尝试安装多种语言的文档和翻译。某些程序旨在删除此类不必要的文件,例如localepurgeAUR,它在安装软件包后运行以删除不需要的语言环境文件。通过pacman.conf中的NoExtract指令提供了一种更直接的方法,该方法可以防止安装这些文件。
警告:一些用户指出,即使在Xorg下,删除语言环境也会导致意想不到的后果。
下面的示例安装英语(美国)文件,或完全不安装:
/etc/pacman.conf
NoExtract = usr/share/help/* !usr/share/help/en*
NoExtract = usr/share/gtk-doc/html/*
NoExtract = usr/share/locale/* usr/share/X11/locale/* usr/share/i18n/* opt/google/chrome/locales/* !usr/share/X11/locale/C/*
NoExtract = !*locale*/en*/* !usr/share/i18n/charmaps/UTF-8.gz !usr/share/*locale*/locale.*
NoExtract = !usr/share/*locales/en_?? !usr/share/*locales/i18n* !usr/share/*locales/iso*
NoExtract = !usr/share/*locales/trans*
NoExtract = usr/share/qt4/translations/*
NoExtract = usr/share/man/* !usr/share/man/man*
NoExtract = usr/share/vim/vim*/lang/*
NoExtract = usr/lib/libreoffice/help/en-US/*

5. pkglist

https://wiki.archlinux.org/index.php/Pacman/Tips_and_tricks#List_of_installed_packages
保留所有明确安装的软件包的列表对于例如备份系统或加快在新系统上的安装非常有用:
$ pacman -Qqe > pkglist.txt
要从以前保存的软件包列表中安装软件包,而又不重新安装已经是最新的软件包,请运行:
$ sudo pacman -S --needed - < pkglist.txt
但是,列表中可能存在诸如来自AUR或本地安装的外部软件包。要从列表中过滤出外部软件包,可以按如下方式丰富前一个命令行:
$ sudo pacman -S --needed $(comm -12 <(pacman -Slq | sort) <(sort pkglist.txt))
最终,要确保系统中已安装的软件包与列表匹配,并删除其中未提及的所有软件包:
$ sudo pacman -Rsu $(comm -23 <(pacman -Qq | sort) <(sort pkglist.txt))

列出软件包中所有更改的文件
# paccheck --md5sum --quiet
重新安装所有软件包
# pacman -Qqn | pacman -S -

6. 更多参考阅读

https://www.ibm.com/developerworks/cn/linux/1310_caoyq_linuxdelete/index.html
给 Linux 系统“减肥” 201310

查找重复文件-fdupes和fslint的比较 |2012年6月2日-09:02 |drad
http://www.adercon.com/ac/node/56

如何查找(和删除)重复文件 2017-11-10
https://ubuntuqa.com/article/453.html
https://askubuntu.com/questions/3865/how-to-find-and-delete-duplicate-files
https://qastack.cn/ubuntu/3865/how-to-find-and-delete-duplicate-files

https://qastack.cn/superuser/801746/how-to-deduplicate-40tb-of-data
find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | sort | uniq -w32 --all-repeated=separate

https://rmlint.readthedocs.io/en/latest/cautions.html
注意事项(或为什么很难编写dupefinder)
本节介绍安全删除重复项的良好做法。它无意与专门相关rmlint。它包括有关重复检测的一般性讨论,并举例说明了重复发现者可能会陷入的陷阱。本部分不仅对重复查找者的开发人员有用,而且对寻求有关重复数据删除最佳实践的用户也很有帮助。
删除重复项时的良好做法...

https://rmlint.readthedocs.io/en/latest/benchmarks.html
基准
该页面包含我们的基准测试套件针对当前版本渲染的图像。基准套件里面,rmlint被质疑与其他流行的一些鲜为人知的重复的发现者。除此之外,还使用了一个非常笨拙的重复查找baseline.py程序,该程序用于查看程序将盲目地哈希找到的所有文件的速度。幸运的是,这些程序都没有 那么慢。我们将在图上进行一些说明,尽管我们将重点放在上rmlint。当然,您可以自由地解释不同的事物,也可以 在自己的计算机上重新运行基准测试。图中给出了每个程序的确切版本。


linux-mount-iso

 
1. linux下简单制作iso,img镜像文件
2. 查看iso文件信息: 
3. mount
 3.1 mount
  3.1.1 挂载iso
  3.1.2 As root 使用以下命令将设备作为根目录挂载: 
  3.1.3 允许普通用户写
  3.1.4 列出挂载的文件系统
  3.1.5 man page (mount & umount)
 3.2 Udisks
  3.2.1 手动安装可移动驱动器,例如/dev/sdc:
  3.2.2 挂载ISO映像,请使用以下命令:
  3.2.3 隐藏所选分区
  3.2.4 隐藏的设备(udisks2)
  3.2.5 udisksctl
 3.3 gvfs
 3.4 udevil
 3.5 udiskie
 3.6 更多


1. linux下简单制作iso,img镜像文件

https://www.cnblogs.com/sztom/p/10184766.html
1. 直接从cd压制iso文件:
dd if=/dev/cdrom of=file.iso bs=1M
2. 要把某个文件或者目录压到iso文件中:
mkisofs -r -o file.iso your_folder_name/
3. 加载iso
mount -t iso9660 -o loop xxx.iso /path
4. 移除光盘
umount /mnt/cdrom

2. 查看iso文件信息:

可以看到以下都是可以启动的iso镜像文件, 倒数第二个字段是卷标lable.
$ file admincd-amd64-20200520T135827Z.iso
admincd-amd64-20200520T135827Z.iso: ISO 9660 CD-ROM filesystem data (DOS/MBR boot sector) 'Gentoo amd64 AdminCD 20200520T13' (bootable)
$ file linuxmint-20-xfce-64bit.iso
linuxmint-20-xfce-64bit.iso: ISO 9660 CD-ROM filesystem data (DOS/MBR boot sector) 'Linux Mint 20 Xfce 64-bit' (bootable)
$ file manjaro-xfce-20.0.3-200606-linux56.iso
manjaro-xfce-20.0.3-200606-linux56.iso: ISO 9660 CD-ROM filesystem data (DOS/MBR boot sector) 'MANJARO_XFCE_2003' (bootable)

3. mount

3.1 mount

https://wiki.archlinux.org/index.php/File_systems#Mount_a_file_system

3.1.1 挂载iso

$ sudo mount admincd-amd64-20200520T135827Z.iso /mnt/sc1/
mount: /mnt/sc1: WARNING: device write-protected, mounted read-only.
$ sudo mount admincd-amd64-20200520T135827Z.iso /mnt/sc1 -o loop
mount: /mnt/sc1: WARNING: device write-protected, mounted read-only.
$ sudo umount /mnt/sc1

https://wiki.archlinux.org/index.php/USB_storage_devices#Mounting_USB_memory

3.1.2 As root 使用以下命令将设备作为根目录挂载:

$ sudo mount device_node /mnt/usbstick
or
$ sudo mount -U UUID /mnt/usbstick

3.1.3 允许普通用户写

$ sudo mount -o gid=users,fmask=113,dmask=002 /dev/sda1 /mnt/usbstick

作为具有fstab的普通用户
https://wiki.archlinux.org/index.php/QEMU#Mounting_a_partition_from_a_raw_image
...
mount包含几个选项,其中许多取决于指定的文件系统。可以通过以下方式更改选项:
提示:文件系统也可以使用systemd-mount代替mount来装载。如果未指定安装点,则文件系统将在处安装。这样可以轻松地挂载文件系统,而不必决定将文件挂载在何处。有关用法和更多详细信息,请参见systemd-mount(1)。/run/media/system/device_identifier/
https://jlk.fjfi.cvut.cz/arch/manpages/man/systemd-mount.1

3.1.4 列出挂载的文件系统

$ findmnt

3.1.5 man page (mount & umount)

Options: (mount & umount)
$ mount --helpmount [-lhV]
$ umount --helpumount [-hV]
Mount a filesystem.mount -a [options]
Unmount filesystems.umount -a [options]
Usage:mount [options] [--source] <source> | [--target] <directory>
Usage:umount [options] <source> | <directory>

mount [options] <source> <directory>


mount <operation> <mountpoint> [<target>]

$ mount --helpOptions:
$ umount --help选项:
-c, --no-canonicalizedon't canonicalize paths相同

选项
-c, --no-canonicalize不要规范化路径
-n, --no-mtabdon't write to /etc/mtab-n, --no-mtab不要写到/ etc/mtab
-O, --test-opts <list>limit the set of filesystems (use with -a)-O, --test-opts <list>限制文件系统集(与-a一起使用)
-t, --types <list>limit the set of filesystem types-t, --types <list>限制文件系统类型集
-v, --verbosesay what is being done-v, --verbose说出正在做什么
-h, --helpdisplay this help-h, --help显示此帮助
-V, --versiondisplay version-V, --version显示版本
-a, --allmount all filesystems mentioned in fstab
挂载fstab中提到的所有文件系统
相反

相近
选项
-a, --allunmount all filesystems
卸载所有文件系统
-i, --internal-onlydon't call the mount.<type> helpers
不要调用安装。<type>助手
-i, --internal-onlydon't call the umount.<type> helpers
不要调用umount。<type>助手
-N, --namespace <ns>perform mount in another namespace
在另一个名称空间中执行挂载
-N, --namespace <ns>perform umount in another namespace
在另一个名称空间中执行umount
-r, --read-onlymount the filesystem read-only (same as -o ro)
挂载文件系统为只读(与-o ro相同)
-r, --read-onlyin case unmounting fails, try to remount read-only
万一卸载失败,请尝试以只读方式重新安装
-f, --fakedry run; skip the mount(2) syscall
空转跳过mount(2)syscall
--fakedry run; skip the umount(2) syscall
空转跳过umount(2)syscall
-F, --fork || fork off for each device (use with -a) || 为每个设备分叉(与-a一起使用)
-T, --fstab <path> || alternative file to /etc/fstab || /etc/fstab的替代文件
-l, --show-labels || show also filesystem labels || 同时显示文件系统标签
--options-mode <mode> || what to do with options loaded from fstab || 从fstab加载的选项怎么办
--options-source <source> || mount options source || 挂载选项源
--options-source-force || force use of options from fstab/mtab || 强制使用fstab/mtab中的选项
-o, --options <list> || comma-separated list of mount options || 逗号分隔的安装选项列表
--source <src> || explicitly specifies source (path, label, uuid) || 明确指定来源 (path, label, uuid)
--target <target> || explicitly specifies mountpoint || 明确指定安装点
--target-prefix <path> || specifies path use for all mountpoints || 指定所有安装点的路径使用
-w, --rw, --read-write || mount the filesystem read-write (default) || 以读写方式挂载文件系统(默认)
不同

选项
-A, --all-targets || unmount all mountpoints for the given device in the current namespace || 卸载当前名称空间中给定设备的所有安装点
-d, --detach-loop || if mounted loop device, also free this loop device || 如果安装了回路设备,请同时释放此回路设备
-f, --force || force unmount (in case of an unreachable NFS system) || 强制卸载(如果无法访问NFS系统)
-l, --lazy || detach the filesystem now, clean up things later || 立即分离文件系统,稍后再清理
-R, --recursive || recursively unmount a target with all its children || 以其所有子代递归卸载目标
-q, --quiet || suppress 'not mounted' error messages || 禁止显示“未安装”错误消息
mount: (Source, Operations)
$ mount --helpSource:资源:
-L, --label <label>synonym for LABEL=<label>LABEL = <label>的同义词
-U, --uuid <uuid>synonym for UUID=<uuid>UUID = <uuid>的同义词
LABEL=<label>specifies device by filesystem label通过文件系统标签指定设备
UUID=<uuid>specifies device by filesystem UUID通过文件系统UUID指定设备
PARTLABEL=<label>specifies device by partition label通过分区标签指定设备
PARTUUID=<uuid>specifies device by partition UUID通过分区UUID指定设备
<device>specifies device by path按路径指定设备
<directory>mountpoint for bind mounts (see --bind/rbind)绑定安装的安装点(请参阅--bind/rbind)
<file>regular file for loopdev setup用于loopdev设置的常规文件

Operations:操作方式:
-B, --bindmount a subtree somewhere else (same as -o bind)在其他地方安装子树(与-o bind相同)
-M, --movemove a subtree to some other place将子树移到其他地方
-R, --rbindmount a subtree and all submounts somewhere else安装一个子树,所有子安装在别处
--make-sharedmark a subtree as shared将子树标记为共享
--make-slavemark a subtree as slave将子树标记为从属
--make-privatemark a subtree as private将子树标记为私有
--make-unbindablemark a subtree as unbindable将子树标记为不可绑定
--make-rsharedrecursively mark a whole subtree as shared递归地将整个子树标记为共享
--make-rslaverecursively mark a whole subtree as slave递归地将整个子树标记为slave
--make-rprivaterecursively mark a whole subtree as private递归地将整个子树标记为私有
--make-runbindablerecursively mark a whole subtree as unbindable递归地将整个子树标记为不可绑定
FILES: (mount & umount)
/etc/fstabfilesystem table文件系统表
/etc/mtabtable of mounted filesystems (deprecated and usually replaced by symlink to /proc/mounts)已挂载文件系统表(已弃用,通常由/proc/mounts的符号链接代替)
mount FILES

/run/mountlibmount private runtime directorylibmount私有运行时目录
/etc/mtabtable of mounted filesystems or symlink to /proc/mounts挂载文件系统表或/ proc/mounts的符号链接
/etc/mtab~lock file (unused on systems with mtab symlink)锁定文件(在具有mtab symlink的系统上未使用)
/etc/mtab.tmptemporary file (unused on systems with mtab symlink)临时文件(在具有mtab symlink的系统上未使用)
/etc/filesystemsa list of filesystem types to try尝试的文件系统类型列表
umount FILES

/proc/self/mountinfotable of mounted filesystems generated by kernel.内核生成的已挂载文件系统表。

3.2 Udisks

udisks2: Disk Management Service, version 2
https://wiki.gentoo.org/wiki/Udisks
过时的文章... https://wiki.gentoo.org/wiki/Category:Outdated_articles
udisks是提供存储相关服务的D-Bus守护程序。提供的服务包括:枚举存储设备,类似于udev,但有更多详细信息; 挂载文件系统; 存储设备分区; 监视存储设备; 存储设备的配置。

https://wiki.archlinux.org/index.php/Udisks
udisks提供了一个守护程序udisksd,该守护程序实现了用于查询和操作存储设备的D-Bus接口,还提供了一个命令行工具udisksctl,用于查询和使用该守护程序。
udisksd(8)由 D-Bus按需启动,因此不应显式启用。可以使用 udisksctl(1)通过命令行进行控制。
Polkit限制了用户可以使用udisk执行的操作。如果未激活或不存在用户会话(例如,当从systemd / User服务控制udisk时),请相应地调整Polkit规则。

3.2.1 手动安装可移动驱动器,例如/dev/sdc:

$ udisksctl mount -b /dev/sdc1
$ udisksctl unmount -b /dev/sdc1

3.2.2 挂载ISO映像,请使用以下命令:

$ udisksctl loop-setup -r -f image.iso
这将创建一个循环设备,并显示准备安装的ISO映像。卸载后,循环设备将由udev终止。
挂载到/run/media/用户/目录下, 以卷标为文件夹名称:
/run/media/toma/Gentoo amd64 20200520T135827Z/
/run/media/toma/MANJARO_XFCE_2003/

3.2.3 隐藏所选分区

如果希望防止某些分区或驱动器出现在桌面上,则可以创建udev规则,例如/etc/udev/rules.d/10-local.rules:
KERNEL=="sda1", ENV{UDISKS_IGNORE}="1"
KERNEL=="sda2", ENV{UDISKS_IGNORE}="1"
因为块设备名称可以在重新引导之间更改,所以也可以使用UUID(从执行blkid /dev/sdX命令收集到的)来隐藏分区或整个设备:
# blkid /dev/sdX
/dev/sdX: LABEL="Filesystem Label" UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX" UUID_SUB="YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY" TYPE="btrfs"
然后可以使用以下行:
SUBSYSTEM=="block", ENV{ID_FS_UUID}=="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX", ENV{UDISKS_IGNORE}="1"

3.2.4 隐藏的设备(udisks2)

默认情况下,Udisks2对用户隐藏某些设备。如果这是不想要的或其他问题,复制/usr/lib/udev/rules.d/80-udisks2.rules到/etc/udev/rules.d/80-udisks2.rules并删除复制以下部分:
# Devices which should not be display in the user interface
[...]

3.2.5 udisksctl

$ sudo pacman -Fl udisks2 |grep bin
udisks2 usr/bin/udisksctl
udisks2 usr/bin/umount.udisks2

$ udisksctl help
$ udisksctl helpUsage: udisksctl COMMAND
Use "udisksctl COMMAND --help" to get help on each command.
Commands:

helpShows this information显示此信息
dumpShows information about all objects显示有关所有对象的信息
statusShows high-level status(disk and block devices)显示高级状态 (disk and block devices)
monitorMonitor changes to objects监视对象的更改
infoShows information (object, device, drive)显示信息 (object, device, drive)
mountMount a filesystem挂载文件系统
unmountUnmount a filesystem卸载文件系统
unlockUnlock an encrypted device解锁加密设备
lockLock an encrypted device锁定加密的设备
loop-setupSet-up a loop device设置回路设备
loop-deleteDelete a loop device删除循环设备
power-offSafely power off a drive安全关闭驱动器电源
smart-simulateSet SMART data for a drive设置驱动器的SMART数据

$ udisksctl COMMAND --help
-p, 对象,路径
–object-path
-b, 块设备
–block-device
--no-user-interaction主项目各自选项
Y objectY blockYmount-o, --optionsMount options挂载选项
-t, --filesystem-typeFilesystem type to use要使用的文件系统类型
Y objectY blockYunmount-f, --forceForce/lazy unmount强制/延迟卸载
Y objectY blockYunlock--key-fileKeyfile for unlocking解锁密钥文件
--read-onlyUnlock the device as read-only将设备解锁为只读
Y objectY blockYlock




Yloop-setup-o, --offsetStart at <num> bytes into file从<num>个字节开始到文件
-f, --fileFile to set-up a loop device for用于设置回路设备的文件
-r, --read-onlySetup read-only device设置只读设备
-s, --sizeLimit size to <num> bytes将大小限制为<num>个字节
Y objectY DeviceYloop-delete


Y objectY block
info-d, --driveDrive to get information about获取驱动有关的信息
Y PashY DeviceYpower-off


Y PashY DeviceYsmart-simulate-f, --fileFile with libatasmart blob用libatasmart blob归档

$ devmon --help
$ devmon --helpdevmon version 1.1.9 (distributed with udevil)devmon版本1.1.9(随udevil一起分发)

Automounts and unmounts optical and removable drives自动挂载和卸下光盘驱动器和可移动驱动器
Requires:udevil bash>=4udevil bash> = 4
Also Recommended:eject spacefm|zenity弹出空间
Optional:udisks v1 may be substituted for udeviludisks v1可以代替udevil

If udevil is not set suid, udisks v1/v2 or pmount is required如果未将udevil设置为suid,则需要udisk v1 / v2或pmount
Usage: devmon [AUTOMOUNT-OPTIONS]# Run as daemon to automount#作为守护程序运行以自动挂载
devmon [MOUNT-OPTIONS]# Or run as client to manually un/mount#或以客户端身份运行以手动卸载/挂载

AUTOMOUNT-OPTIONS: (these can be used only in daemon mode)AUTOMOUNT-OPTIONS :(只能在守护程序模式下使用)
--exec-on-device DEVICE "COMMAND"Execute COMMAND after mounting DEVICE挂载DEVICE后执行COMMAND
--exec-on-label "LABEL" "COMMAND"Execute COMMAND after mounting LABEL安装标签后执行命令
--exec-on-video "COMMAND"Execute COMMAND after video DVD mount装入视频DVD后执行命令
--exec-on-audio "COMMAND"Execute COMMAND after audio CD insertion插入音频CD后执行命令
--exec-on-disc "COMMAND"Execute COMMAND after data CD/DVD mount装入数据CD / DVD后执行COMMAND
--exec-on-drive "COMMAND"Execute COMMAND after drive mount安装驱动器后执行命令
--exec-on-unmount "COMMAND"Execute COMMAND after unmount卸载后执行命令
--exec-on-remove "COMMAND"Execute COMMAND after drive removal卸下驱动器后执行命令

Where the following in COMMAND will be replaced with:COMMAND中的以下内容将替换为:
%dmount point directory (eg /media/cd)挂载点目录(例如/ media / cd)
%fdevice name (eg /dev/sdd1)设备名称(例如/ dev / sdd1)
%llabel of mounted volume安装卷标

Multiple --exec-on-XXX options may be used to execute multiple commands.多个--exec-on-XXX选项可用于执行多个命令。

Other exec-on-XXX commands are ignored if exec-on-device or -label executed.如果执行exec-on-device或-label,则将忽略其他exec-on-XXX命令。
--mount-options "OPTIONS"Default: noexec,nosuid,nodev,noatime默认值:noexec,nosuid,nodev,noatime
--info-on-mountShow mounted drive info in a popup dialog在弹出对话框中显示已安装的驱动器信息
--no-mountDon't mount anything, just exec (disables --exec-on-video)不要挂载任何东西,只是执行(禁用--exec-on-video)
--no-unmountDon't unmount all removable drives on exit不要在退出时卸载所有可移动驱动器

MOUNT-OPTIONS: (these can be used only in client mode)安装选项:(这些选项只能在客户端模式下使用)
--unmount-removable | -rSync and unmount all removable drives and show pop-up dialog (spacefm or zenity required)同步和卸载所有可移动驱动器并显示弹出对话框(需要spacefm或zenity)
--unmount-recent | -cUnmount most recently mounted removable drive卸载最近安装的可移动驱动器
--unmount-optical | -oUnmount all optical drives (error pop-up only)卸下所有光盘驱动器(仅错误弹出窗口)
--unmount-all | -uSame as --unmount-removable --unmount-optical与--unmount-removable --unmount-optical相同
--unmount DIR|DEVICEUnmount DEVICE or mount point DIR卸载DEVICE或挂载点DIR
--eject DIR|DEVICEUnmount and eject DEVICE or mount point DIR卸载并弹出DEVICE或挂载点DIR
--mount-all | -aMount all removable and optical drives安装所有可移动和光盘驱动器
--mount DEVICEMount DEVICE挂载DEVICE
--mount-options|--mount-fstype|--eject-options "OPTIONS"These options will be passed to mount or eject这些选项将被传递以挂载或弹出
--enumerate-device-filesList known devices列出已知设备

UNIVERSAL OPTIONS: (these can be used in both daemon and client modes)通用选项:(可以在守护程序和客户端模式下使用)
--ignore-device DEVICEIgnore DEVICE (eg /dev/sdd1)忽略设备(例如/ dev / sdd1)
--ignore-label "LABEL"Ignore volume with LABEL用LABEL忽略音量
--sync | -sAdd sync mount option for ext2-4 ntfs ufs, or flush for fat & vfat (slower writing but safer)为ext2-4 ntfs ufs添加同步安装选项,或为fat&vfat刷新(写入速度较慢但更安全)
--internalAlso attempt to un/mount internal system drives (this is mostly a fix for esata issues)还尝试卸载/挂载内部系统驱动器(这主要是针对esata问题的修复)
--always-execAlso run --exec-on-XXX commands during startup or with --mount-all在启动过程中或与--mount-all一起运行--exec-on-XXX命令
--no-gui | -gDo not show spacefm/zenity pop-up dialogs不显示spacefm / zenity弹出对话框

$ udisksctl status
MODEL REVISION SERIAL      DEVICE
-------------------------------------------------------------
OCZ-TRION100 SAFM11.2 X5RB54XWKMCX sda
WDC WD10JPVT-60A1YT0 01.01A01 WD-WX21AB225546 sdb

$ udisksctl info -b /dev/sda3
/org/freedesktop/UDisks2/block_devices/sda3:
...

3.3 gvfs

https://wiki.archlinux.org/index.php/File_manager_functionality#Mounting
Gnome虚拟文件系统(gvfs)提供了挂载和垃圾回收功能。 GVFS使用udisks2来实现挂载功能,并且是大多数文件管理器的推荐解决方案。
$ sudo pacman -Ss gvfs
extra/gvfs 1.44.1-4 (gnome) [installed] Virtual filesystem implementation for GIO
extra/gvfs-afc 1.44.1-4 (gnome) (AFC backend; Apple mobile devices)
extra/gvfs-google 1.44.1-4 (gnome) (Google Drive backend)
extra/gvfs-gphoto2 1.44.1-4 (gnome) (gphoto2 backend; PTP camera, MTP media player)
extra/gvfs-mtp 1.44.1-4 (gnome) (MTP backend; Android, media player)
extra/gvfs-goa 1.44.1-4 (gnome) (Gnome Online Accounts backend; cloud storage)
extra/gvfs-nfs 1.44.1-4 (gnome) (NFS backend)
extra/gvfs-smb 1.44.1-4 (gnome) (SMB/CIFS backend; Windows client)
实现自动挂载U盘, 挂载U盘的右键菜单包含“Umount 和 Eject”(卸载,弹出)两个选项。

3.4 udevil

https://wiki.archlinux.org/index.php/List_of_applications#Mount_tools
udevil — Mounts removable devices as a regular user, show device info, and monitor device changes. Only depends on udev and glib. 以普通用户身份安装可移动设备,显示设备信息并监视设备更改。仅取决于udev和glib。包括devmon,它与udisks和udisks2兼容。
https://ignorantguru.github.io/udevil
https://github.com/IgnorantGuru/udevil

$ sudo pacman -Fl udevil |grep bin
udevil usr/bin/devmon
udevil usr/bin/udevil

$ udevil mount linuxmint-20-xfce-64bit.iso
Mounted /mnt/sda8bk/LinuxISO/mint20/linuxmint-20-xfce-64bit.iso at /media/toma/linuxmint-20-xfce-64bit.iso
/media/toma/linuxmint-20-xfce-64bit.iso/

$ udevil mount manjaro-xfce-20.0.3-200606-linux56.iso
Mounted /mnt/sda8bk/LinuxISO/manjaro20/manjaro-xfce-20.0.3-200606-linux56.iso at /media/manjaro-xfce-20.0.3-200606-linux56.iso
/media/manjaro-xfce-20.0.3-200606-linux56.iso/
??--------------??
$ udevil umount -l /media/manjaro-xfce-20.0.3-200606-linux56.iso/
$ udevil umount -l /media/toma/linuxmint-20-xfce-64bit.iso/

$ udevil --help
Usage: udevil [OPTIONS] COMMAND [COMMAND-OPTIONS] [COMMAND-ARGUMENTS]
MOUNT-使用MOUNT-OPTIONS将DEVICE挂载到挂载点DIR:
    udevil mount|--mount [MOUNT-OPTIONS] [[-b|--block-device] DEVICE] [DIR]
UNMOUNT-使用UNMOUNTOPTIONS卸载设备或DIR:
    udevil umount|unmount|--unmount|--umount [UNMOUNT-OPTIONS] {[-b|--block-device] DEVICE}|DIR

OPTIONS:
    --verbose || print details 打印细节
    --quiet || minimal output 最小输出

MOUNT-OPTIONS:
    -t|--types|--filesystem-type|--mount-fstype || 文件类型
    -o|--options|--mount-options OPT,... || 挂载选项
    --no-user-interaction || 不需要用户验证

UNMOUNT-OPTIONS:
    -l || lazy unmount (see man umount) 懒惰卸载
    -f || force unmount (see man umount) 强制卸载
    --no-user-interaction || ignored (for compatibility) 不需要用户验证

EXAMPLES: mount
udevil mount /dev/sdd1

udevil mount -o ro,noatime /dev/sdd1

udevil mount -o ro,noatime /dev/sdd1 /media/custom

udevil mount /tmp/example.iso# ISO file#ISO文件
udevil mount ftp://sys.domain# ftp site - requires curlftpfs or ftpfs#ftp站点-需要curlftpfs或ftpfs
udevil mount ftp://user:pass@sys.domain/share# ftp share with user and password#ftp与用户和密码共享
udevil mount ftp://user:pass@sys.domain:21/share# ftp share with port, user and password#ftp与端口,用户和密码共享
udevil mount -t ftpfs sys.domain# ftp site with ftpfs#使用ftpfs的ftp站点
udevil mount -t curlftpfs sys.domain# ftp site with curl#带有curl的ftp站点
udevil mount -t curlftpfs user:pass@sys.domain# ftp site with curl u/p#带有curl u / p的ftp站点
udevil mount nfs://sys.domain:/share# nfs share#nfs分享
udevil mount sys.domain:/share# nfs share#nfs分享
udevil mount smb://sys.domain/share# samba share w/ cifs#samba与w / cif分享
udevil mount smb://user:pass@10.0.0.1:50/share# samba share w/ u/p/port#samba共享w / u / p / port
udevil mount smb://WORKGROUP/user@sys.domain# samba share w/ workgroup#samba与工作组共享
udevil mount //sys.domain/share# samba share w/ cifs#samba与w / cif分享
udevil mount //sys.domain/share -t smbfs# samba share w/ smbfs#桑巴分享w / smbfs
udevil mount ssh://user@sys.domain# sshfs with user - requires sshfs#与用户一起使用sshfs-需要sshfs
udevil mount -t sshfs user@sys.domain# sshfs with user与用户#sshfs
udevil mount http://sys.domain/dav/# WebDAV - requires davfs2#WebDAV-需要davfs2
udevil mount tmpfs# make a ram drive#制作一个ram驱动器

EXAMPLES: umount
    udevil umount /dev/sdd1
    udevil umount /media/disk
    udevil umount -l /media/disk
    udevil umount /tmp/example.iso
MONITOR  -  Display device events emulating udisks v1 output: 监视器-模拟udisk v1输出的显示设备事件:
    udevil monitor|--monitor
    EXAMPLE:  udevil monitor
CLEAN  -  Remove unmounted udevil-created mount dirs in media dirs 删除介质目录中未安装的由udevil创建的安装目录
    udevil clean

3.5 udiskie

https://wiki.archlinux.org/index.php/Udisks#Mount_helpers
udiskie — udisks2自动挂载程序,带有可选的通知,任务栏图标以及对受密码保护的LUKS设备的支持。有关详细信息,请参见udiskie Wiki。
https://github.com/coldfix/udiskie

3.6 更多

FuseISO是一个FUSE模块,用于让没有特权的用户挂载ISO文件系统映像(.iso,.nrg,.bin,.mdf和.img)。
Nemo作为文件浏览器,在右键单击以安装iso时具有打包功能。单击已安装的iso的相应图标即可完成卸载,就像对USB驱动器一样。
KDiskFree — Displays information about hard disks and other storage devices. It also allows to mount and unmount drives and view them in a file manager. 显示有关硬盘和其他存储设备的信息。它还允许安装和卸载驱动器,并在文件管理器中查看它们。
https://www.kde.org/applications/system/kdiskfree/ [dead link 2020-02-25] || kdf

Sound

导航 (返回顶部) 1. Sound 1.1 声-音 1.2 声波的性质及特性 2. 声音频率 2.1 听力范围 2.2 VF-语音频率 2.3 人声基本频率 2.4 8度音阶表 2.5 综合表 3. 声波 3.1 Compression and she...