Khôi phục tập tin sau khi ghi đè. Cách sao chép các tệp cụ thể (không phân cấp thư mục) nhưng không ghi đè lên các tệp hiện có

Pavel Mikhailov

Khi công ty táo giới thiệu Leopard với tính năng cho phép bạn khôi phục tập tin cá nhân người dùng đã xóa vào nhiều thời điểm khác nhau đều tỏ ra kinh ngạc. Nhiều người vẫn chưa biết rằng Windows Vista cũng có tính năng tương tự, trong đó bạn cũng có thể khôi phục các file đã xóa hoặc các phiên bản trước đó của chúng.

Làm thế nào nó hoạt động

Hệ điều hành Microsoft Vista cho phép bạn khôi phục các phiên bản trước đó hoặc đã xóa của tệp và thư mục thông qua việc sử dụng các điểm khôi phục đặc biệt được tạo bởi dịch vụ Khôi phục Hệ thống. Dịch vụ này, sử dụng thông tin từ điểm khôi phục được tạo gần đây nhất, cho phép bạn lấy lại một số dữ liệu đã bị xóa hoặc thay thế.

Dịch vụ sử dụng một số dung lượng trống của bạn để lưu trữ các điểm khôi phục. ổ cứng. Các điểm sẽ được ghi đè khi khối lượng này được lấp đầy. Số lớn hơnđiểm tương ứng chiếm một khối lượng lớn hơn. Bạn có thể điều chỉnh thủ công nhưng tối thiểu bạn cần ít nhất 300MB. Dù sao khôi phục hệ thống sẽ không chiếm quá 15% tổng dung lượng ổ cứng của bạn. Cũng cần lưu ý rằng dịch vụ này không hoạt động trên các ổ đĩa có hệ thống tệp FAT32.

Kiểm tra tính khả dụng trên ổ cứng của bạn không gian trông lên 300MB rồi kích hoạt dịch vụ khôi phục hệ thống hoặc đảm bảo rằng nó đã được bật. Để làm điều này, hãy làm theo các bước sau:

  1. Nhấp vào nút "Bắt đầu";
  2. Chọn "Máy tính", nhấp vào nó click chuột phải chuột và chọn "Thuộc tính";
  3. Đăng nhập vào " Tùy chọn bổ sung System" rồi chọn tab "Bảo vệ hệ thống";
  4. Dấu kiểm bên cạnh ổ đĩa cho biết khôi phục hệ thống đã được bật cho nó. Chọn các hộp cho tất cả các đĩa hoặc phân vùng được yêu cầu.

Trong trường hợp của chúng tôi, khôi phục chỉ được kích hoạt cho ổ C.

Khi bạn đã bật Khôi phục Hệ thống, bạn nên tạo điểm khôi phục theo cách thủ công. Để thực hiện việc này, bạn không cần phải khởi động lại máy tính mà chỉ cần làm theo các bước sau:

Bạn không cần phải làm điều này mọi lúc. Sau khi bạn đã bật Khôi phục Hệ thống, Windows Vista sẽ tự động tạo điểm khôi phục mỗi ngày. Ngoài ra, một điểm khôi phục được tạo trong trường hợp mỗi sự kiện hệ thống, chẳng hạn như khi cài đặt một chương trình hoặc trình điều khiển.

Bây giờ bạn có thể khôi phục các tập tin và thư mục đã xóa của mình. Xin lưu ý rằng bạn kích hoạt khôi phục hệ thống càng sớm thì khả năng khôi phục dữ liệu của bạn càng cao. Hầu như không thể khôi phục tệp đã bị xóa trước khi dịch vụ được kích hoạt. Bạn chỉ có thể thử thực hiện việc này bằng các chương trình khôi phục khác nhau và thậm chí chỉ khi dữ liệu khác chưa được ghi vào vị trí tệp của bạn.

Sau đó, các tệp và/hoặc thư mục được khôi phục của bạn sẽ xuất hiện ở nơi bạn đã kéo dữ liệu của mình.

Nếu bạn quên tập tin hoặc thư mục đã xóa ở đâu

Nếu bạn quên nơi bạn ở tập tin đã bị xóa hoặc của bạn thư mục từ xa, sau đó bạn có thể chỉ cần chọn đĩa chứa chúng và nhấp chuột phải vào nó, đi tới “Thuộc tính” của nó, rồi đến “Phiên bản trước”.

Tiện ích Lịch sử Tệp ( Lịch sử tập tin) trong Windows được đặt tên theo khả năng khôi phục các phiên bản cũ hơn của tệp. Tính năng này là một phần của tất cả các chương trình Dự trữ bản sao, mặc dù nó thường được gọi là "Khôi phục". Mặc dù ý tưởng là giống nhau: bạn xóa khỏi kho lưu trữ sao lưu phiên bản cũ tài liệu. Tính năng Lịch sử tệp giúp việc này trở nên dễ dàng quá trình này và làm việc với các tập tin nói chung.

Để trả lại phiên bản cũ của tập tin từ đĩa sao lưu, bạn cần làm theo các bước sau.

  • Nếu cần thay thế Phiên bản hiện tại mới: chọn "Khôi phục" và sau đó "Thay thế tệp trong ứng dụng đích." Tệp hiện tại được thay thế bằng bản sao lưu.
  • Để lưu cả phiên bản hiện tại và bản sao lưu đã khôi phục, bạn phải nhấp vào “Khôi phục” và chọn “Khôi phục vào”. Chọn thư mục đích cho tập tin được khôi phục.
  • Xem bản sao lưu trữ: Nhấp vào Mở. Tệp chưa được khôi phục nhưng bạn có thể xem nội dung của nó để xem nó có chứa thông tin bạn cần hay không.

4. Sau đó nhấp vào đóng cửa sổ Thuộc tính khi hoàn tất. Nếu như những phiên bản trước không, bạn sẽ thấy thông báo "Không có phiên bản trước nào sau bước 2. Điều này có nghĩa là tệp mới và chưa được sao chép, tệp đó chưa thay đổi hoặc bản sao lưu của tập tin này không tồn tại. Tiện ích Lịch sử Tệp không phải là sự thay thế cho việc khôi phục tệp từ Thùng rác; nếu bạn xóa một tập tin, bạn cần khôi phục nó từ Thùng rác.

Lịch sử tệp chỉ hoạt động với các tệp trong thư mục bạn đã chọn khi thiết lập tiện ích.

Video: Cách khôi phục tài liệu Microsoft Word, Excel hoặc PowerPoint chưa được lưu hoặc bị hỏng

Điều không may sau đây đã xảy ra với tôi: Tôi có một tập tin làm việc chính xác và tôi đã vô tình ghi đè một tập tin trống lên trên tập tin chính xác. Thông tin dường như bị mất, nhưng việc tìm kiếm trên Internet đã dẫn tôi đến một thông tin lời khuyên thú vị. Theo mình hiểu thì khi xóa file thì công thức sẽ giống nhau.

Tình huống của tôi không hoàn toàn bình thường vì quá trình xử lý bên ngoài của 1C 7.7 (tệp có phần mở rộng *.ert) đã bị ghi đè.

Vì vậy, sau khi có được phần mềm cần thiết (WinHex.exe), tôi làm như sau:

  • Mở WinHex.exe
  • Chạy lệnh Công cụ → Mở đĩa
  • Trong cửa sổ hiện ra, chọn đĩa cần thiết và hãy nhấn ĐƯỢC RỒI

// Nếu bạn cần khôi phục một tập tin từ ổ đĩa flash, tốt hơn hết hãy chọn nó trong danh sách

Phương tiện vật lý chứ không phải ký tự ổ đĩa logic (xem Hình 2)

Cơm. 1. Chọn đĩa khôi phục

// Sau khi mở đĩa, nội dung của nó sẽ được hiển thị trong cửa sổ chương trình dưới dạng mã thập lục phân

Cơm. 2. Mở ổ đĩa trong mã thập lục phân

Nếu bạn có một số phân vùng (Phân vùng) và bạn biết phân vùng chứa tệp trước khi ghi đè, thì trong cửa sổ, bạn cần đi đến phân vùng tương ứng. Điều này sẽ tăng tốc thời gian phục hồi.

  • Chạy lệnh Công cụ → Công cụ đĩa → Phục hồi tập tin Theo loại
  • Nếu một cửa sổ xuất hiện như trong Hình. 3 - nhấn ĐƯỢC RỒI

Cơm. 3. Cảnh báo rằng tốt hơn nên lưu các tệp đã khôi phục trên một ổ đĩa khác với ổ đĩa gốc

  • Trong trường hợp của tôi, tình huống không hoàn toàn bình thường vì không có tệp nào trong danh sách chữ ký xử lý bên ngoài*.ert, vì vậy chúng tôi thực hiện như sau:
  • Nhấp vào nút “Chữ ký” và thêm một dòng mới:

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

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

  • chữ ký là 8 byte đầu tiên của file có định dạng bắt buộc, đối với *.ert thì lấy ví dụ như thế này, mở bất kỳ tập tin bình thường và chúng tôi thấy:

  • và bây giờ so sánh dòng trên cùng 8 byte đầu tiên là với những gì tôi đã viết trước đó :)
  • sau khi thêm thì chọn cái mới của chúng ta trong danh sách chữ ký

Cơm. 5. Chọn định dạng của file được khôi phục

  • Trong cùng một cửa sổ, chọn thư mục cho các tệp được khôi phục trong trường Thư mục đầu ra(tốt hơn là chọn một thư mục trên ổ đĩa khác với ổ đĩa bị mất tệp)
  • Nhấp chuột Được rồi
  • Xem thư mục được chỉ định làm thư mục đầu ra bằng cách sử dụng Windows Explorer- cần có tập tin được khôi phục ở đó

Ghi chú:
Chương trình đổ MỌI THỨ vào thư mục do người dùng chỉ định tập tin bị xóa có thể được khôi phục. Theo quy định, các tệp được khôi phục sẽ không được hiển thị dưới tên gốc của chúng, tức là. Nếu như tập tin gốcđược gọi là report.ert thì tệp được khôi phục có thể được gọi, ví dụ: 00001.ert. Nếu có thể khôi phục một số phiên bản của một tệp, chương trình sẽ làm như vậy, tức là. thay vì xóa một tệp report.ert, chương trình sẽ đưa nó vào Đầu ra tập tin thư mục 00001.ert, 00002.ert, 00003.ert, v.v. Người dùng phải chọn tệp ghi đè mong muốn “giống nhau” một cách độc lập. Ngoài ra, cùng với các file trong thư mục Output sẽ được tạo tập tin văn bản với mô tả về tất cả các tệp được khôi phục, các tệp được khôi phục một phần (bị hỏng) sẽ được liệt kê riêng. Các tệp bị hỏng có chữ “X” trong tên của chúng, ví dụ 00001X.ert.

Sau khi khôi phục, bạn có thể tìm kiếm từ trình cấu hình hoặc, ví dụ: sử dụng Total Commander để tìm tệp được yêu cầu, điều chính là biết bất kỳ văn bản nào bên trong tệp, tên của các biến, tên của các thành phần biểu mẫu.. .

Tôi cần sao chép tất cả *. tập tin tài liệu(nhưng không phải các thư mục có tên khớp với *.doc) từ Thư mục mạng\\server\source (bao gồm các tệp trong tất cả các thư mục con) trong thư mục cục bộ C:\destination mà không lưu giữ các thư mục con của hệ thống phân cấp (tức là tất cả các tệp sẽ chuyển trực tiếp đến C:\destination và không được tạo thư mục con nào trong C:\destination). Nếu có một số tập tin với cùng tên từ các thư mục con khác nhau của \\server\source , chỉ nên sao chép thư mục đầu tiên và không bao giờ ghi đè - tất cả các tệp xung đột được tìm thấy sau đó sẽ bị bỏ qua (có thể có nhiều trường hợp như thế này và các tệp bị bỏ qua sẽ không được truyền qua mạng, nếu không nó sẽ sẽ mất quá nhiều thời gian). Đây là nỗ lực của tôi để triển khai nó trong PowerShell:

Cp \\server\source\* -Recurse -Bao gồm *.doc -Container:$false -Destination C:\destination

Có hai vấn đề với lệnh này:

  • Nó sao chép các thư mục có tên trùng với *.doc.
  • Trong trường hợp tên xung đột, bất kỳ tệp nào được tìm thấy sau đó sẽ được chuyển qua mạng và ghi đè lên tệp trước đó.

Bạn có thể đề xuất cách khắc phục những vấn đề này?
Việc triển khai bằng cách sử dụng copy , xcopy , robocopy , cscript hoặc *.bat , *.cmd cũng được hoan nghênh.
Hệ điều hành cục bộ là Windows 8 và hệ thống tập tin- NTFS.

5 câu trả lời

Trước tiên tôi sẽ tạo một danh sách các tập tin và kiểm tra xem bạn xem qua danh sách như thế nào.

Một cái gì đó như thế:

$srcdir = "\\server\source\"; $destdir = "C:\destination\"; $files = (Get-ChildItem $SrcDir -recurse -filter *.doc | đối tượng ở đâu (-not ($_.PSIsContainer))); $files|foreach($_)( if (!(::Exists($destdir+$_.name)))( cp $_.Fullname ($destdir+$_.name) ); )

Vì vậy, hãy sử dụng Get-ChildItem để hiển thị các tệp trong thư mục nguồn khớp với bộ lọc thông qua đối tượng Where để cắt bỏ các thư mục.

Sau đó duyệt qua từng tệp trong vòng lặp foreach và kiểm tra xem tên tệp có tồn tại không (không phải Họ và tên) trên mục tiêu bằng phương thức Exists của lớp system.io.file .NET.

Nếu không đúng như vậy, chỉ sao chép bằng cách sử dụng tên khai sinh tập tin (loại bỏ đường dẫn ban đầu).

Sử dụng tùy chọn -whatif trên bản sao khi kiểm tra, để nó chỉ hiển thị những gì nó sẽ làm, trong trường hợp kết quả không như bạn mong muốn :-)

Các câu trả lời trước có vẻ quá phức tạp đối với tôi nếu tôi không hiểu điều gì đó. Điều này sẽ hoạt động:

Get-ChildItem "\\server\source\" *.doc -Recurse | ?(-không ($_.PSIsContainer -or (Đường dẫn thử nghiệm "C:\Destination\$_"))) | Sao chép mục -Destination "C:\Destination"

Không có lệnh tích hợp nào - copy, xcopy hoặc robocopy - sẽ tự thực hiện những gì bạn muốn, nhưng có một tiện ích tên là xxcopy sẽ có sẵn một cách thuận tiện tại http://www.xxcopy.com. Nó có một số tùy chọn tích hợp được thiết kế đặc biệt để làm phẳng các cây thư mục thành một thư mục duy nhất. Dưới đây là những gì bạn mô tả:

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

# Nhận tất cả các tệp *.doc trong \\server\source Get-ChildItem -Path \\server\source *.doc -Recurse | # Lọc ra các giám đốc Where-Object ( -not $_.PsIsContainer ) | # Thêm thuộc tính cho điểm đến ScriptProperty bổ sung -Tên đích -Giá trị ( Đường dẫn tham gia "C:\destination" $this.Name ) -PassThru | # Lọc ra các tệp tồn tại trên đích Where-Object ( -not (Test-Path -Path $_.Destination -PathType Leaf ) | # Copy. Copy-Item

Tại sao nên sử dụng foreach khi bạn đã có một đường dẫn? Thuộc tính tính toán để giành chiến thắng!

Get-ChildItem -Recurse -Path:\\Server\Path -filter:"*.doc" | Ở đâu ( -không phải $_.PSIsContainer ) | Tên nhóm | Chọn @(Name="Path"; Expression=($_.Group.FullName)),@(Name="Destination"; Expression=("C:\Destination\(0)" -f $_.Name)) | Sao chép mục