如何使用Windows卷影拷贝服务恢复文件和文件夹
什么是卷影拷贝?
从Windows XP SP2和Windows Server 2013开始,微软就向Windows操作系统中引入了一项名叫卷影拷贝的服务(Volume Shadow Copy Service-VSS)。这种服务允许Windows系统以自动或手动的方式对文件或磁盘卷宗的当前状态进行备份(或快照),需要注意的是,在这个过程中,即使文件处于打开状态下该服务仍然可以直接进行文件备份。
当这些备份文件被创建之后,它们会被保存在一个特殊的容器中,即卷影拷贝(Volume Shadow Copy)。备份软件、实用工具或Windows系统都可以使用这些卷影拷贝来恢复已被删除或以某种形式修改后的文件。当我们使用卷影拷贝服务创建了一个备份文件时,它使用的是一种基于版本的方法备份的,即每次只备份文件中发生了变化的地方,而不是备份整个文件。因此,这种机制将允许我们查看到同一文件的不同版本,而不需要占用大量的磁盘空间。
你可以看到,如果有需要的话,这项技术可以帮助我们恢复被删除或被修改的文件。但是除此之外,我还发现这项服务可以用来恢复旧的游戏存档、已被勒索软件加密的文件、或自己不小心删除的文件。
在这篇文章中,我将给大家介绍两种使用卷影拷贝服务来恢复文件的方法。
第一种方法利用的是Windows内置的功能-以前的版本(Previous Versions);第二种方法使用了一款名叫Shadow Explorer的工具,这款工具可以帮助你直接查看卷影拷贝的文件或文件夹。
如何使用Windows的内置功能-以前的版本(Previous Versions)来恢复文件
Windows内置有一种名叫以前的版本(PreviousVersions)的功能,这项功能可以帮助我们从卷影拷贝快照中恢复以前的文件。下面所介绍的方法只能从卷影拷贝中恢复单一文件,如果你想要恢复整个文件夹的话,请看下面的章节。
首先,进入包含需要恢复文件的文件夹:
右键点击需要恢复的文件,选择属性:
在弹出的菜单中,点击“属性”(Properities),然后点击“以前的版本”(Previous Versions)标签。接下来,你会看到卷影拷贝中存储的该文件所有的之前版本。
接下来,你可以点击“恢复”(覆盖文件的当前版本)或“复制”(可选存储地址)按钮来恢复文件。如果你不确定的话,我建议你点击“复制”按钮将文件存储到特定目录中:
如何恢复整个文件夹
实际上,恢复文件夹跟恢复单一文件的操作是差不多的,只不过在右键点击并选择“属性”的这一步操作中,如果你想要恢复文件夹,你需要在文件夹中的空白地方点击鼠标右键并选择“属性”。
剩下的操作就跟之前恢复单一文件时是一样的了,即选择需要恢复的文件夹版本,然后点击“复制”按钮即可。
使用ShadowExplorer从卷影拷贝中恢复文件或文件夹
ShadowExplorer下载地址:【阅读原文】
就我个人而言,我比较偏爱这种方法,因为操作起来比较直观。下载好这个工具之后,打开它,你将会看到一个类似资源管理器的界面,其中包含有各个驱动器下的卷影拷贝以及相应的修改日期和文件类型。你可以选择驱动器和创建时间来快速寻找需要恢复的文件:
接下来,找到你需要恢复的文件或文件夹,右键点击它,然后选择“导出”(Export)。
点击了“导出”之后,ShadowExplorer将会显示一个对话框让你选择将文件恢复到哪里,选择好之后点击“确认”(OK)即可:
为什么恶意软件会尝试删除卷影副本?
计算机勒索软件在感染了Windows系统并加密了目标用户的文件之后,通常都会尝试删除卷影副本。大家已经看到了,使用卷影副本来恢复文件是多么的简单,那么勒索软件当然不想用户这么轻松地就恢复了自己的文件!
当勒索软件尝试删除卷影副本时,通常使用的是下面这行命令:
C:WindowsSysnativevssadmin.exe"Delete Shadows /All /Quiet
这条命令执行之后,Windows将会显示一条UAC对话框并询问用户是否要以管理员权限执行这条命令。如果用户允许执行,那么vssadmin.exe将会删除目标主机中所有驱动器的卷影副本。在某种情况下,勒索软件还会使用PowerShell或WMIC命令来删除SVC,并以此来防止用户恢复那些已被勒索软件加密了的文件。
- 我母亲遭遇勒索软件CryptoWall的全过程
- Android浏览器跨域数据窃取和Intent Scheme攻击
- 关于React Native项目在android上UI性能调试实践
- 一文读懂如何用 Python 实现6种排序算法
- 三星KNOX远程静默安装漏洞深入分析报告
- 技术分享:MSSQL注入xp_cmdshell
- 通过5个简单序列预测实例学习LSTM递归神经网络
- Google发现Windows 8.1 0day漏洞并公布漏洞验证程序(PoC)
- 携程React Native实践
- 数据分析告诉你:Php最不安全,Nginx比Apache安全
- 用python抓取摩拜单车API数据并做可视化分析(源码)
- 用Pandas在Python中可视化机器学习数据
- Intent 属性详解(下)
- 把复杂json解析成javabean思路:思路:
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- mybatis文件映射之select操作返回Map
- shm进程间通信失败了!!!
- Vue3.0 beta源码学习笔记(二)
- 【自然语言处理】使用朴素贝叶斯进行语种检测
- 关于errno的后事妥善处理
- Vue3.0 beta源码学习笔记(三)
- 你会不会分布式系统进程间通信?
- 学以致用C++设计模式 之 “备忘录模式”
- Mybatis学习笔记(三)关联查询以及相关属性
- 学以致用C++设计模式 之 “装饰者模式”
- 学以致用C++设计模式 之 “责任链模式”
- 学以致用C++设计模式 之 “命令模式”
- 学以致用C++设计模式 之 “中介模式”
- 【自然语言处理】利用LDA对希拉里邮件进行主题分析
- 学以致用C++设计模式 之 “代理模式”