Как скопировать определенные файлы (без иерархии папок), но не перезаписывать существующие файлы? Как вернуть файлу прежнюю версию

При копировании пользователи иногда совершают серьезную ошибку – заменяют файл с важной информацией другими данными. В результате перезаписанный файл становится недоступным, и вернуть его не получается. Прежнюю версию документа, рисунка или данных другого типа можно восстановить, но для этого придется поработать с настройками Windows или применить сторонние приложения.

Восстановление предыдущей версии

Если у вас была включена защита системы, то вы можете быстро восстановить предыдущую версию через свойства. Сначала убедитесь, что защита системы активирована и Windows автоматически создает резервные копии, из которых можно восстановить данные:

Если защита выключена, активируйте её на будущее, чтобы при необходимости иметь возможность быстро вернуть прежнюю версию данных. Как это работает на практике:


Вам остается только выбрать нужный файл по дате изменения и нажать «ОК», чтобы его восстановить. Отсутствие резервных копий данных можно объяснить несколькими причинами:

  • Выключена функция «Защита системы».
  • Вы пытаетесь восстановить системные данные, в которых хранится информация о пользователе или системе (для них резервная копия не создается по умолчанию).
  • В файл или папку не вносились изменения.
  • Резервные данные удалены в числе временных данных программой CCleaner или другой чистящей утилитой.

Помните, что резервные копии не хранятся вечно: они постоянно обновляются, старые данные стираются, заменяясь новыми сведениями. Поэтому восстановить получится только ту версию файла, что сохранилась недавно. Чтобы быть уверенным в том, что резервная копия сохраняется, настройте архивацию данных с помощью встроенного инструмента «Архивация и восстановление».

Восстановление перезаписанных данных

Если защита системы была выключена, то у вас есть еще один шанс вернуть замененный файл – применить универсальный HEX-редактор WinHex, который изучает и изменяет все виды данных, восстанавливая стертую или замененную информацию.

Программу можно установить или запустить в портативном режиме. Если замененный файл хранился на жестком диске, то рекомендуется использовать портативную версию редактора, так как при установке на винчестер будут записаны новые данные, которые могут затереть нужную информацию, что помешает её восстановить.


После завершения восстановления зайдите в папку, путь к которой вы указали, нажав кнопку «Output folder». Внутри вы увидите все данные, которые удалось восстановить. Имена у файлов будут заменены цифровыми значениями, поэтому искать документ или рисунок придется по содержанию. Если программа обнаружит несколько версий файла, то она восстановит их все. Выберите подходящий файл и перенесите его в другую папку, чтобы не потерять.

Остановите запись на жесткий диск. Если вы заметили, что случайно удалили файл или записали другой файл поверх него, больше ничего не сохраняйте на этот жесткий диск. Не запускайте программы. Если на диск будут записываться новые данные, они могут помешать восстановлению удаленного файла. Если вы не будете записывать ничего нового, ваши шансы на успешное восстановление возрастут.

Скачайте бесплатную программу PhotoRec на другом компьютере или на другой жесткий диск. Это очень эффективная бесплатная программа. Она не очень красива, но она может делать то же, что и более дорогие программы для восстановления. Ее можно скачать совершенно бесплатно с сайта www.cgsecurity.org как часть утилиты TestDisk.

  • PhotoRec существует в версии для Windows, OS X и Linux.
  • Скачивайте программу на другой жесткий диск, чтобы не записать ничего поверх файла, который вы хотите восстановить. Можно скачать PhotoRec на другой жесткий диск, но лучше использовать отдельный компьютер.
  • Вставьте в компьютер пустой USB-накопитель. Лучше всего использовать такой накопитель, на котором хватит места как для программы, так и для файлов, которые вы хотите восстановить. Это объясняется тем, что восстановление файла на тот же диск, на котором он был поврежден, может привести к перезаписи файла, в результате чего он восстановится некорректно.

    • PhotoRec занимает всего 5 мегабайт и поместится на любой USB-накопитель.
  • Разархивируйте скачанный файл с программой. TestDisk будет лежать в архиве в формате ZIP (Windows) или BZ2 (Mac). Разархивируйте папку с TestDisk.

    Скопируйте папку с TestDisk на флэш-накопитель. Это позволит запустить PhotoRec с USB-накопителя.

    Вставьте флэш-накопитель в компьютер, на котором находится поврежденный файл (или файлы). Откройте папку с TestDisk на флэш-накопителе.

    Запустите программу PhotoRec. На экране появится командная строка.

    • Перемещайтесь вверх, вниз, влево и вправо с помощью стрелочек и используйте кнопки ↵ Enter и ⏎ Return , чтобы сделать выбор.
  • Выберите диск, на котором нужно восстановить файл. Диски будут просто пронумерованы, поэтому вам нужно будет обращать внимание на их размер, чтобы понять, какой диск вам нужен.

    • Если на вашем жестком диске много разделов (например, C: и D:), они не будут видны, пока вы не выберете сам диск.
  • Выберите тип файла, который вы хотите найти. По умолчанию PhotoRec будет пытаться восстановить все файлы, формат которых он поддерживает. Можно ускорить процесс, указав, какие именно файлы вас интересуют.

    • Можно изменить тип файла в меню File Opt .
    • Находясь в меню File Opt , отмените выделение всех файлов в списке, нажав S . Затем пройдитесь по списку и выберите те файлы, которые вам нужны.
  • Выберите нужный раздел диска. Вам придется узнавать разделы по размеру. Некоторые из них могут быть подписаны.

    Выберите тип файловой системы. Если вы работаете на Linux, выберите ext2/ext3 . Если вы используете Windows или OS X, выберите Other .

  • Решите, где искать файл. Ваш выбор может определяться тем, как был удален файл:

    • Free - выберите этот вариант, если вы вручную удалили файл или записали другой файл поверх этого.
    • Whole - выберите этот вариант, если файл был утерян в результате ошибки жесткого диска.
  • Мне нужно скопировать все *.doc файлы (но не папки, имена которых соответствуют *.doc) из сетевой папки \\server\source (включая файлы во всех вложенных папках) в локальную папку C:\destination без сохранения вложенных папок иерархии (т.е. все файлы должны идти непосредственно в C:\destination , и никакие вложенные папки не должны создаваться в C:\destination). Если есть несколько файлов с одинаковыми именами из разных подпапок \\server\source , только первый должен быть скопирован и никогда не перезаписан - все конфликтующие файлы, найденные позже, должны быть пропущены (может быть много случаев, подобных этому, и пропущенные файлы не должны быть перенесены по сети, иначе это займет слишком много времени). Вот моя попытка реализовать его в PowerShell:

    Cp \\server\source\* -Recurse -Include *.doc -Container:$false -Destination C:\destination

    Есть две проблемы с этой командой:

    • Он копирует папки, имена которых также соответствуют *.doc .
    • В случае конфликтующих имен любой файл, найденный позже, передается по сети и перезаписывает предыдущий файл.

    Можете ли вы предложить, как исправить эти проблемы?
    Реализации с использованием copy , xcopy , robocopy , cscript или *.bat , *.cmd также приветствуются.
    Локальная ОС - это Windows 8, а файловая система - NTFS.

    5 ответов

    Я сначала создаю список файлов и проверю, как вы проходите через список.

    Что-то вроде этого:

    $srcdir = "\\server\source\"; $destdir = "C:\destination\"; $files = (Get-ChildItem $SrcDir -recurse -filter *.doc | where-object {-not ($_.PSIsContainer)}); $files|foreach($_){ if (!(::Exists($destdir+$_.name))){ cp $_.Fullname ($destdir+$_.name) }; }

    Итак, используйте Get-ChildItem для отображения файлов в исходной папке, соответствующих фильтру, через where-object , чтобы вырезать каталоги.

    Затем пройдите через каждый файл в цикле foreach и проверьте, существует ли имя файла (не полное имя) в целевом объекте с помощью метода Exists класса system.io.file .NET.

    Если это не так, скопируйте, используя только оригинальное имя файла (отбрасывая исходный путь).

    Используйте параметр -whatif на копии при тестировании, поэтому он отображает только то, что он сделал бы, в случае, если результат не тот, который вы хотели:-)

    Предыдущие ответы кажутся мне слишком сложными, если я что-то не понимаю. Это должно работать:

    Get-ChildItem "\\server\source\" *.doc -Recurse | ?{-not ($_.PSIsContainer -or (Test-Path "C:\Destination\$_"))} | Copy-Item -Destination "C:\Destination"

    Ни одна из встроенных команд - copy, xcopy или robocopy - будет делать то, что вы хотите самостоятельно, но есть утилита с именем xxcopy, которая будет удобно доступна в http://www.xxcopy.com . Он имеет ряд встроенных опций, специально предназначенных для выравнивания деревьев каталогов в один каталог. Ниже описано, что вы описали:

    Xxcopy "\\server\source\*.doc" "C:\Destination" /SGFO

    # Get all *.doc files under \\server\source Get-ChildItem -Path \\server\source *.doc -Recurse | # Filter out directores Where-Object { -not $_.PsIsContainer } | # Add property for destination Add-Member ScriptProperty -Name Destination -Value { Join-Path "C:\destination" $this.Name } -PassThru | # Filter out files that exist on the destination Where-Object { -not (Test-Path -Path $_.Destination -PathType Leaf } | # Copy. Copy-Item

    Зачем использовать foreach, когда у вас уже есть конвейер? Вычисляемые свойства для победы!

    Get-ChildItem -Recurse -Path:\\Server\Path -filter:"*.doc" | Where { -not $_.PSIsContainer } | Group Name | Select @{Name="Path"; Expression={$_.Group.FullName}},@{Name="Destination"; Expression={"C:\Destination\{0}" -f $_.Name}} | Copy-Item

    Случилась со мной такая напасть, был правильный рабочий файл и я случайно перезаписал поверх правильного пустой. Информация как бы потеряна, но поиск по сети интернет привел меня на один интересный совет. Как я понимаю при удалении файла рецепт будет таким же.

    Ситуация у меня была не совсем стандартная, так как перезаписана была внешняя обработка 1С 7.7 (файл с расширением *.ert)

    Итак, обзаведясь необходимым ПО (WinHex.exe) выполняю следующее:

    • Открыть WinHex.exe
    • Выполнить команду Tools → Open Disk
    • В появившемся окне выбрать нужный диск и нажать Ок

    // Если нужно восстановить файл с флешки — лучше выбирать её в списке

    Physical Media а не Logical Drive Letters (см. рис. 2)

    Рис. 1. Выбор диска для восстановления

    // После открытия диска, в окне программы отобразится его содержимое в виде 16-ричных кодов

    Рис. 2. Открытый диск в виде 16-ричных кодов

    Если у вас несколько разделов (Partition) и вам известен раздел на котором находился файл до перезаписи то в окне необходимо зайти на соответствующий раздел. Это ускорит время восстановления.

    • Выполнить команду Tools → Disk Tools → File Recovery By Type
    • Если появится окно как на рис. 3 — нажать Ок

    Рис. 3. Предупреждение, что лучше сохранять восстановленные файлы на ином диске, чем исходные

    • В моем случае ситуация была не совсем стандартная, так как в списке сигнатур нет файла внешней обработки *.ert, поэтому делаем следующее:
    • Жмем кнопку «Signatures» и добавляем новую строку:

    ERT ert \xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1 0

    ERT ert \ xD0 \ xCF \ x11 \ xE0 \ xA1 \ xB1 \ x1A \ xE1 0

    • сигнатура это первые 8 байт файла в требуемом формате, для *.ert она берется например так, открывем в том же WinHex любой нормальный файл и видим:

    • а теперь сравние верхнюю строку первые 8 байт с тем что я написал ранее 🙂
    • после добавления выбираем в списке сигнатур нашу новую

    Рис. 5. Выбор формата восстанавливаемых файлов

    • В том же окне выбрать папку для восстановленных файлов в поле Output folder (лучше выбирать папку на другом диске, чем диск на котором потеряны файлы)
    • Нажать Ok
    • Посмотреть папку, указанную как Output folder с помощью проводника Windows — там должны быть восстановленные файлы

    Примечание:
    Программа скидывает в указанную пользователем папку ВСЕ стёртые файлы, которые может восстановить. Восстановленные файлы, как правило, выводятся не под исходными именами, т.е. если оригинальный файл назывался отчёт.ert, то восстановленный файл может называться, например, 00001.ert. Если возможно восстановить несколько версий одного файла — программа так и сделает, т.е. вместо одно затёртого файла отчёт.ert программа скинет в Output folder файлы 00001.ert, 00002.ert, 00003.ert и т.д. Выбрать «тот самый» нужный затёртый файл пользователь должен самостоятельно. Также вместе с файлами в Output folder будет создан текстовый файл с описанием всех восстановленных файлов отдельно будут указаны файлы восстановленные частично (поломанные). В имени у поломанных файлов присутствует буква «Х» например 00001X.ert.

    После восстановления можно поиском или из конфигуратора или например тотал коммандером найти требуемый файл, главное знать какой либо текст внутри файла, название переменных, название элементов формы…

    Утилита «История файлов» (File History) в Windows получила свое имя за возможность восстановления более старых версий файла. Эта функция является частью всех программ резервного копирования, хотя ее часто называют «Восстановление» (Restore). Хотя идея такая же: из резервного архива вы изымаете старую версию файла. Функция «История файлов» упрощает данный процесс и работу с файлами в целом.

    Для того чтобы вернуть старую версию файла с резервного диска, вам необходимо выполнить следующие действия.

    • Если нужно заменить текущую версию новой: выберите «Восстановить», а затем «Заменить файл в целевом приложении». Текущий файл заменяется резервной копией.
    • Для того чтобы сохранить как нынешнюю версию, так и восстановленную резервную копию, необходимо нажать «Восстановить» и выбрать «Восстановить в». Выберите целевую папку для восстановленного файла.
    • Чтобы просмотреть архивную копию: щелкните «Открыть». Файл не восстановлен, но вы можете просмотреть его содержимое, чтобы узнать, содержит ли он необходимую информацию.

    4. Затем нажмите закрыть окно «Свойства», когда закончите. Если предыдущих версий нет, вы увидите сообщение «Нет предыдущих версий, доступных после шага 2. Это означает, что файл является новым и не был скопирован, что файл не изменился или что резервная копия данного файла не существует. Утилита «История файлов» (File History) не является заменой для восстановления файла из корзины; если вы удаляете файл, вам необходимо восстановить его из Корзины.

    История файлов работает только с файлами в папках, которые вы выбрали при настройке утилиты.

    Видео: Как восстановить несохраненный или поврежденный документ Microsoft Word, Excel или PowerPoint