kil*_*ist 11 linux backup files
从我使用 Windows 开始,我已经积累了大量保留的文件系统副本以及系统和数据驱动器的存档。我试图将它们提炼成可用的部分,同时丢弃所有可能毫无价值的东西。
从观看一堆上述文件在复制时滚动,再一次,从一个固定驱动器到一个工作驱动器,我想我已经开始了一个“好”和“无用”文件的启动列表,但我想知道是否有应该立即丢弃无用的任何权威类型的文件列表(来自以前的 Windows 环境)?
获胜者:(我知道如果做出任何努力使其全面,这份清单可能会变得一团糟,所以这些不是我要找的,除非他们可能被垃圾包围,可能会无意中将他们摧毁) (编辑:如果唯一的方法是基于白名单的超级全面的方法,那就这样吧。如果不是这种情况,我更愿意,但乞丐不能成为选择者……大多数时候。 )
*.tar.*, *.rar, *.zip
*.mp(e)g, *.avi, *.mkv, *.wmv, *.asf
Run Code Online (Sandbox Code Playgroud)
失败者:( 这些才是我真正想要的)
*.exe, *.bat, *.dll, *.com, *.lnk
Run Code Online (Sandbox Code Playgroud)
我也知道会有例外。像安装程序 .exe 文件,用于在 Wine 中安装某些东西。就这个问题而言,这种担忧不是一个。所有有问题的文件都是副本(副本,可能还有更多副本),因此我真正想要保留的安装程序位于不错、安全且可能受写保护的地方。
只有您知道您需要/想要保留什么。但是,在某种程度上,您可以识别 Windows 系统文件和其他已安装的程序文件。
在虚拟机中重新安装 Windows 和那些程序,然后列出VM中所有文件名的两个列表;
在VM中,制作新安装系统的第一个列表
dir /S /B /A-D C:\ >vmlist.1
在VM中,制作更新后系统的第二个列表
dir /S /B /A-D C:\ >vmlist.2
回到 *nix,合并这两个文件并删除重复的行。
sort -u vmlist.1 vmlist.2 >vmlist
列表现在看起来像这样(但当然要长得多):
C:\name with 6 special chars [$.^|]
C:\Windows\System32\asr_fmt.exe
C:\Windows\System32\asr_ldm.exe
C:\Windows\System32\asr_pfu.exe
现在将列表转换为regex适合的模式grep
sed -r 's/\\/\//g; s/[]$.^|[]/\\&/g; s/^[[:alpha:]]:/^.*/; s/$/$/' vmlist >vmlist.rex
正则表达式列表将如下所示。
^.*/name with 6 special chars \[\$\.\^\|\]$
^.*/Windows/System32/asr_fmt\.exe$
^.*/Windows/System32/asr_ldm\.exe$
^.*/Windows/System32/asr_pfu\.exe$
制作包含在目标存档目录中的文件列表
find '/my/archive/dir' -type f >arclist
现在从匹配正则表达式模式的文件中创建一个子列表arclisl。
<arclist grep -f vmlist.rex >arcmatches
arcmatches包含匹配的 Windows 文件。检查它们并在您对所看到的内容感到满意时将其删除。这是删除(移除)命令。
<arcmatches xargs -d'\n' rm -v
清除垃圾的最简单方法可能是根据创建日期或上次修改日期(您可能需要进行试验以确定哪个更好) - 只需使用系统安装日期作为起点即可。
根据帕累托原理,简单的过滤器可能会获得您所寻求的 80% 的效果。
(当然,您可以,甚至应该,将此列表与您已经开始收集的黑白名单结合起来。)